我可以从使用 $(command) 启动的子 shell 获取退出代码吗?

Que*_*ark 28 bash shell-script command-substitution exit-status

我正在设置这样的变量:

myvar=$(command --params)
Run Code Online (Sandbox Code Playgroud)

之后我想检查$?我的命令的退出代码 ( )。$?像这样检查总是会返回,0因为它成功地将变量设置为命令的输出。

是否有可能获得 的返回值command

Dop*_*oti 38

是的,它甚至可以在不偏离您的方式的情况下进行:

$ $(exit 3); echo $?
3

$ foo="$(echo bar; exit 3)"; echo $?; echo $foo
3
bar
Run Code Online (Sandbox Code Playgroud)

  • @cwingrav 如果您将`local` 声明从赋值中分离为两个单独的步骤,它会起作用:`local var; var=$(exit 3); 回声“$?”` (12认同)
  • 在函数内部,如果使用“local”,则似乎不起作用。仅供参考。 (7认同)

归档时间:

查看次数:

17462 次

最近记录:

8 年,10 月 前