gpt4 book ai didi

bash - 从内联 Expect 命令返回退出状态码

转载 作者:行者123 更新时间:2023-11-29 09:24:10 25 4
gpt4 key购买 nike

如何让 Expect 在执行 expect -c 时返回退出状态码而不是 0 或 1。

例如,在执行以下行后,我希望返回“17”,但我得到的却是“0”,表示命令已成功运行。

expect -c "spawn echo \"foo\"; expect { -re \"foo\" { exit 17 } }"; echo $?

最佳答案

经过一些测试,我发现:

expect -c "spawn echo foo; expect \"\n-re . {puts OK}\""

相当于下面的 Expect 脚本:

spawn echo foo; expect {
-re . {puts OK}}

按预期工作。但是如果你删除 \n 它将失败。因此,当参数的第一个字符是新行时,Expect 仅使用多行语法。否则它会尝试使用它进行匹配,在您的情况下它会尝试匹配 -re "foo"{ exit 17 } 。如果你在开头添加一个exp_internal 1,expect会输出这一行:

expect: does "foo\r\n" (spawn_id exp6) match glob pattern " -re "foo" { exit 17 } "? no

So simply omit the {} for the expect group.
The correct statement should be:

expect -c "spawn echo \"foo\"; expect -re \"foo\" { exit 17 }"; echo $?

关于bash - 从内联 Expect 命令返回退出状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com