私は期待スクリプトでこの問題を抱えています。コマンドの出力が「0」のときにキャプチャし、「000」や「100」などの他の数字やチェーンと区別したい
私のコードは次のとおりです。
#!/usr/bin/expect -f
set timeout 3
spawn bash send "echo 0\n"
expect {
-regexp {^0$} { send_user "\nzero\n" }
-re {\d+} { send_user "\number\n"}
}
send "exit\n"
次の応答があります。
spawn bash
echo 0
number
ただし、次の正規表現は機能しません。
-regexp {^0$} { send_user "\nzero\n" }
次のように変更した場合:
-regexp {0} { send_user "\nzero\n" }
動作しますが、「00」「10」「1000」などもキャプチャします。
send "echo 100\n"
expect {
-regexp {0} { send_user "\nzero\n" }
-re {\d+} { send_user "\nnumber\n"}
}
結果:
spawn bash
echo 10
zero
何が間違っているのかわからず、Googleのヘルプから何も見つかりませんでした。ここで解決された同様の問題も検索しましたが、コードでそれを機能させることができませんでした。
更新:
提案された修正コードを試しました:
#!/usr/bin/expect -f
set timeout 3
spawn bash
send "echo 0\n"
expect {
-regexp {\b0\b} { send_user "\nzero\n" }
-re {\d+} { send_user "\nnumber\n"}
}
send "exit\n"
しかし、私はまだこの応答を持っています:
spawn bash
echo 0
number
更新 2
私もこの行を試しました:
-regexp {"^0\n$"} { send_user "\nzero\n" }
しかし、私はまだ同じ結果を得ています。
前もって感謝します