退出bash局部变量赋值中的命令替换代码[重复]

问题描述 投票:25回答:1

这个问题在这里已有答案:

如果赋值是函数中的局部变量,如何在bash中检查命令替换的退出代码? 请参阅以下示例。第二个是我想检查退出代码的地方。 有人有一个良好的解决方案或正确的解决方案吗?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
bash exit-code local-variables command-substitution
1个回答
31
投票

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

试试这个:

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

编辑:我继续为你尝试,它的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.