Shell中使用Expect Here Document

在使用Shell写程序时,有时不得不面对交互的问题——可惜shell往往无法自动完成交互。如果交互的内容很多,自然是直接应用Expect脚本比较方便;如果交互的内容很少,而且考虑到Shell的易用性,在Shell脚本中创建一个Expect 的Here Document更加方便灵活。

如下例所示,Expect Here Document可以直接运行并将运行结果赋给KSH变量rcs_stat。

#!/bin/ksh

autoload formatAPnum

# Set the lab name, COOLLAB
. $COOLXDIR/.netlabs
# Get the RCS cell list
set -A RCSs
typeset -i nx=0
cat $COOLXDIR/.coolcell2dcs | while read cell
do
	if [[ "$cell" = c* ]]
	then
		rcs=${cell%%$COOLLAB*}
		RCSs[$nx]=${rcs#c}
		nx=$nx+1
	fi
done

# Check RCS status
typeset -i loopCount=0
rcs_cnt=${#RCSs[*]}
B_server=$(formatAPnum $BserverAP)
while [ "${#RCSs[*]}" != 0 -a $loopCount -lt 720 ]  # wait at most 2 hours
do
	loopCount=${loopCount}+1

	nx=0
	while [ $nx -lt $rcs_cnt ]
	do
		rcs_stat="OOS"
		rcs_stat=$(
expect - <




你可能感兴趣的:(Tips,Unix/Linux)