[英]Executing an if statement after a specific output in expect script
如果我看到特定的輸出,有沒有辦法執行 if 語句? 例如,當控制台顯示“bad interpreter permission denied”時,我想執行“dos2unix file_name”之類的命令?
所以邏輯將如下所示,
if (output is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
這是一個期望腳本。
編輯:
我可以在期望腳本中做這樣的事情嗎?
if (grep -cim1 '^M$' lruload.sh) -eq 1; then
send dos2unix filename
fi
當你說執行命令時,我希望你的意思是在 shell 中執行命令。 為此,您可以使用exec
命令。
我不確定你在哪里互動。 我的意思是像 telnet 或 ftp 或 bash。 無論如何,在任何情況下,您都將發送命令並期待提示。
send "command 1"
expect "prompt"
send "command 2"
expect {
timeout { puts "timeout happened"}
"bad interpreter per mission denied" {
set result [exec dos2unix <filename>]
}
}
# if need to intact with three application, further use 'send' and 'expect'
您有result
變量來存儲dos2unix
輸出。
這個邏輯/偽代碼怎么樣?
export cmdText=`myCmd param1 param2 2>&1`
if ($cmdText is "bad interpreter permission denied")
{
send dos2unix file_name
}
fi
權限被拒絕的文本可能轉到 stderr,而不是 stdout,因此重定向 2>&1 將兩者混在一起,使測試變得簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.