私はexpectスクリプトを使ってinstaller.shを呼び出すことに取り組んでいます きちんとしたインストールのためにうまくいきます。Expectスクリプト - さまざまな送信
しかし、インストーラが事前チェックに失敗した場合、送信の順序が異なり、注文の管理ができません。
spawn ./Installer.sh
expect "change? (Y/N)"
send "Y\r"
expect "path"
send "$path\r"
expect "Enter selection"
send "1\r"
expect "path"
send "$path
exit 0
2番目の「パス」が予想されると、インストーラは内部的に検証し、手順3に進み、処理を続行して終了します。
しかし、2番目の予想パスの後に、インストーラの事前チェックに失敗した場合は、それが存在し、最後のステップすなわちパスの再入力を促します。
現在、スクリプトが終了後に表示され、4回目のプロンプトを表示すると、それは無関係な3回目の応答を送信し続けます。スクリプトはmatch expect stringを検証しませんか?
Error :
"No Space. Exiting.
**Path: 1**
cp: cannot create regular file `1': Permission denied
send: spawn id exp5 not open
while executing
"send "path\r""
シェルスクリプトはさまざまな理由で終了し、最後に送信するように要求します。
セッションが進行中に最後の表示メッセージexpect_outを取得してそれを読んでそれに基づいて続行する方法はありますか?
spawn shellscript
expect_1
send_1
expect_2
send_2
--sh stops and displays exiting...
if expect_out(buffer)=exiting
then
expect_4
send_4
else
expect_3
send_3
expect_4
send_4
exit
"catch"と一緒に使用できますか? – unNamed
私は 'expect_before'コマンドを使って" Error "メッセージを見ると思います。 –