bash局部变量赋值中命令替换的退出代码
如果赋值给函数中的局部变量,如何在bash中检查命令替换的退出代码?bash局部变量赋值中命令替换的退出代码,bash,exit-code,local-variables,command-substitution,Bash,Exit Code,Local Variables,Command Substitution,如果赋值给函数中的局部变量,如何在bash中检查命令替换的退出代码? 请参见以下示例。第二个是我要检查退出代码的地方。 是否有人对此有很好的解决方法或正确的解决方案 $ function testing { test="$(return 1)"; echo $?; }; testing 1 $ function testing { local test="$(return 1)"; echo $?; }; testing 0 如果查看local(实际上只是BASH内置手册页)的man文件,它将
请参见以下示例。第二个是我要检查退出代码的地方。
是否有人对此有很好的解决方法或正确的解决方案
$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
如果查看
local
(实际上只是BASH内置手册页)的man文件,它将被视为自己的命令,成功创建局部变量后,该命令将给出退出代码0
。因此,local
正在覆盖最后执行的错误代码
试试这个:
function testing { local test; test="$(return 1)"; echo $?; }; testing
编辑:我已经为您尝试过了,而且效果很好。谢谢,就像往常一样,在我发布了我的问题之后,我自己找到了答案,结果与您建议的一样。我只是名声太差了,不能在8个小时过去之前回答自己的问题。但是
manlocal
给了我local(8postfix)
manpage的手册页,所以不太有用。但我在另一个信息来源上发现了它,那就是manbash
local
在“SHELL内置命令”部分中提到。help命令返回有关内置命令的文档。请参阅本地帮助。