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