【问题标题】:Exit code of command substitution in bash local variable assignment [duplicate]bash局部变量赋值中命令替换的退出代码[重复]
【发布时间】:2012-03-20 10:39:45
【问题描述】:

如果分配给函数中的局部变量,我如何检查 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】:

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

    试试这个:

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

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

    【讨论】:

    • 谢谢,像往常一样,在我发布我的问题后,我自己找到了答案,结果与您的建议相同。在 8 小时过去之前,我的名声太小了,无法回答我自己的问题。但是man local 给了我LOCAL(8postfix) 手册页的手册页,所以不太有用。但我在mywiki.wooledge.org/… 上找到了它
    • 另一个信息来源是man bashlocal 在“SHELL BUILTIN COMMANDS”部分下被提及。
    • help 命令返回有关内置命令的文档。见help local
    猜你喜欢
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多