我在bash中使用expect。我想我的腳本telnet到一個盒子,期待一個提示,發送一個命令。如果現在有不同的提示,則必須繼續,否則必須再次發送該命令。 我的腳本是這樣的:while while loops within expected
\#!bin/bash
//I am filling up IP and PORT1 here
expect -c "
set timeout -1
spawn telnet $IP $PORT1
sleep 1
send \"\r\"
send \"\r\"
set temp 1
while($temp == 1){
expect {
Prompt1 { send \"command\" }
Prompt2 {send \"Yes\"; set done 0}
}
}
"
輸出:
invalid command name "while("
while executing
"while(== 1){"
請幫助我。
我試圖將其更改爲while [ $temp == 1] {
我仍面臨以下錯誤:
輸出:
invalid command name "=="
while executing
"== 1"
invoked from within
"while [ == 1] {
expect {
你可能想先寫一個純粹的期望腳本在調試這個問題,所以您不必shell引用規則可能會以微妙的方式改變您期望的腳本。 – 2011-04-20 22:37:19
奇怪的錯誤發生了什麼:因爲腳本是雙引號的,shell(不期望)用'null'替換'$ temp'。 – 2011-04-21 01:23:58