所以我目前有一个使用期望的 bash 脚本,它需要将一组命令发送到控制台。如下所示,我使用 IFS 在换行符上划分这些,然后将它们放入带有期望脚本的变量 cmds_eval 中。然后我希望使用如下所示的 $cmds_eval 将一堆命令一次性发送到期望脚本中。这行不通。似乎 $cmds_eval 没有像我想象的那样被解释。这样做的适当方法是什么?我不相信无论如何都可以在期望脚本中执行foreach,但是如果有的话……下面的脚本当然已经简化了……
cmds_eval=""
OLDIFS=$IFS
IFS="\n" read -ra CMDS <<< "$cmds"
for c in "${CMDS[@]}"; do
cmds_eval+="send -- \"$c\\r\"\r\n"
cmds_eval+="expect \"*myprompt*\"\n"
done
IFS=$OLDIFS
expect <<- DONE
spawn my ssh session
expect "*foobar:*"
send -- "foobar\r"
expect "*foobar:*"
$cmds_eval
send -- "foobar\r"
DONE
cmds 看起来像这样:
cmds="pwd
mv myfile ..
ls"