lon*_*nix 1 bash shell-script trap
该函数应该退出调用脚本:
crash() {
echo error
exit 1
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作:
echo before
crash
echo after # execution never reaches here
Run Code Online (Sandbox Code Playgroud)
但这并不:
echo before
x=$(crash) # nothing is printed, and execution continues
echo after # this is printed
Run Code Online (Sandbox Code Playgroud)
如何捕获函数的结果并允许其退出?
这是因为在子 shell 中$(crash)
执行,因此适用于子 shell 而不是您的脚本。crash
exit
如果由于脚本无论如何都退出而不会使用它,那么在变量中捕获输出有什么意义呢?