我遇到了一个期望脚本的问题。我想捕获命令的输出何时为“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
我不知道我做错了什么,也没有从谷歌的帮助中找到任何帮助。我还搜索了此处解决的类似问题,但我无法使其在我的代码上运行。
更新:
我尝试了建议的修复代码:
#!/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" }
但我仍然有相同的结果。
提前致谢