Bash
使用 IF 語句在期望中創建分支
我正在編寫一個
expect
腳本來處理過多的提示。
bash
我正在使用的腳本可以遵循以下兩個序列之一:
prompt1 -> prompt2 -> prompt3
prompt1 -> prompt3
也就是說,有時我不明白
prompt2
。因此,我的問題是:我如何編寫一個expect
檢查 的腳本prompt2
,如果它在那裡發送 ay
並繼續進行,否則它只是繼續。編輯:感謝@glenn 的輸入和答案!我將嘗試使問題更清楚,以防將來對其他人有所幫助。
bash
我正在處理的特定腳本是從伺服器下載一些數據。所以通常,當我執行腳本時會發生什麼:Do you want to download data from *server name*? y Do you want to download data from *some directory within server*? y ...
但是,有時我在執行此腳本時沒有連接到伺服器。因此,我在腳本中包含了一部分,用於檢查我是否已連接到伺服器。如果我沒有,它會給我另一個提示,如下所示:
Do you want to download data from *server name*? y Looks like you are not connected to *server name*! Want to connect now? y Do you want to download data from *some directory within server*? y ...
我懷疑這就是您想要的:
expect
等待“prompt2”或“prompt3”的命令expect "prompt1" send "answer to prompt1\n" expect { "prompt2" {send "y\n"; exp_continue} "prompt3" } send "answer to prompt3\r"
exp_continue
基本上是一個循環:留在這個期望命令中並繼續尋找列出的模式。“prompt3”沒有對應的動作,所以expect命令結束。