Sometimes simple interactions are needed for Shell scripts. In this scenario, a here document written in Expect will work well. In following example, the output of Expect here document is assigned to KSH variable 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 - <<!
log_user 0
set timeout 20
spawn $COOL_RSH ap$B_server TICLI
send "op:cell ${RCSs[$nx]}\r"
expect {
	timeout {puts "OOS\n"}
	"*DL(S) DOWN" {puts "OOS\n"}
	"*DL(S) UP" {puts "UP\n"}
}
!
		)

		if [ "$rcs_stat" = "UP" ]
		then
			coolprint - "RCS cell ${RCSs[$nx]} is up."
			unset RCSs[$nx]
		fi

		nx=${nx}+1
	done

	[ -n "${RCSs[*]}" ] && sleep 10 
done

coolprint - "All RCSs are up."
exit 0