大家好
我刚刚找到了导致这些奇怪事情的原因。这是命令:发送“等待”
我写了一些脚本来测试它。
proc Login {pass} {
# send the password
}
proc Wait {} {
expect "*]$*"
sleep 1
}
proc sendl {message} {
send "$message\r"
}
spawn ssh xxxxx.xxx.xxx
Login xxxxxxxx
Wait
sendl "cd /somepath/"
Wait
sendl "expect infiniteLoop.exp >/dev/null &"
Wait
***sendl "wait"***
Wait
sendl "TESTTEST"
Wait
sendl "HAHAHA"
Wait
sendl "DONEDONEDONE"
Wait
它应该在该行之后被卡住:sendl“wait”
但结果是:
[xxx@xxxxx.xxx ~]$ cd /somepath/
[xxx@xxxxx.xxx folder]$ expect infiniteLoop.exp >/dev/null &
[1] 27260
[xxx@xxxxx.xxx folder]$ wait
TESTTEST
HAHAHA
DONEDONEDONE
[xxx@xxxxx.xxx folder]$
shell还在等待,但是后续的命令已经一一发出,没有任何反应。该行之后的所有期望命令似乎都是无效的。然后脚本就完成了。
我不知道这里发生了什么。什么原因导致期望命令无效?命令“wait”似乎不是一个程序(我不能使用“whereis wait”找到它)。