26

如果分配给函数中的局部变量,如何检查 bash 中命令替换的退出代码?
请参阅以下示例。第二个是我要检查退出代码的地方。
有人对此有很好的解决方法或正确的解决方案吗?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
4

1 回答 1

31

如果您查看 man 文件local(实际上只是 BASH 内置手册页),它会被视为自己的命令,它会0在成功创建局部变量时给出退出代码。local覆盖最后执行的错误代码也是如此。

尝试这个:

function testing { local test; test="$(return 1)"; echo $?; }; testing

编辑:我继续为您尝试,它有效。

于 2012-03-01T22:14:25.540 回答