在执行expect -c时,如何使Expect返回退出状态代码而不是0或1.
例如,在执行以下行之后,我希望返回"17",但是我得到"0"表示命令成功运行.
expect -c "spawn echo \"foo\"; expect { -re \"foo\" { exit 17 } }"; echo $?
Run Code Online (Sandbox Code Playgroud)
经过一点点测试后我发现了这个:
expect -c "spawn echo foo; expect \"\n-re . {puts OK}\""
Run Code Online (Sandbox Code Playgroud)
这相当于以下Expect脚本:
spawn echo foo; expect {
-re . {puts OK}}
Run Code Online (Sandbox Code Playgroud)
按预期工作.但如果你删除\n
它将失败.因此,当参数的第一个字符是新行时,Expect仅使用多行语法.否则它会尝试使用它进行匹配,在您的情况下它会尝试匹配-re "foo" { exit 17 }
.如果你exp_internal 1
在开头添加一个,期望输出这一行:
expect: does "foo\r\n" (spawn_id exp6) match glob pattern " -re "foo" { exit 17 } "? no
所以简单地省略{}
期望组.
正确的陈述应该是:
expect -c "spawn echo \"foo\"; expect -re \"foo\" { exit 17 }"; echo $?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1248 次 |
最近记录: |