簡體   English   中英

在expect腳本中的特定輸出之后執行if語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM