将函数调用赋给变量时终止bash脚本
我要演示以下代码:将函数调用赋给变量时终止bash脚本,bash,exit,subshell,Bash,Exit,Subshell,我要演示以下代码: #!/bin/bash function demo() { echo "This is A" exit 1 echo "This is B" } input=$(demo) echo "${input}" echo "This is C" 您可以看到,如果我运行此脚本,它将打印出以下输出: This is A This is C 由于我有退出1功能,脚本没有终止并打印最
#!/bin/bash
function demo() {
echo "This is A"
exit 1
echo "This is B"
}
input=$(demo)
echo "${input}"
echo "This is C"
您可以看到,如果我运行此脚本,它将打印出以下输出:
This is A
This is C
由于我有退出1功能,脚本没有终止并打印最后一条语句这是C
但是当我这样调用函数时:
#!/bin/bash
function demo() {
echo "This is A"
exit 1
echo "This is B"
}
demo
echo "${input}"
echo "This is C"
然后程序终止,没有打印最后一条语句“This is C”。输出为:
This is A
对于这一点是否有解释,以及当
退出1
时,如何强制脚本终止,并将函数分配给一个变量,如示例所示。这意味着,在退出1之后不应打印其他语句。您可以在分配变量时检查退出状态,如果失败,则退出主脚本
input=$(demo) || exit 1
顺便说一句:我建议不要对函数使用内部关键字。请参阅
type test
@Cyrus,谢谢您提供的信息。$(…)
在子shell中运行命令,而exit
仅从子shell退出,而不是从原始脚本退出。如果退出脚本,则为变量赋值有什么意义?如何使用变量?@Barmar在大型应用程序中,如果函数产生返回代码为1的错误,则需要退出此脚本。所以,它不应该运行其他语句并在出现错误时终止自身。示例在demo()中调用API时,出现了一些错误,所以将错误的数据分配给变量是无用的。终止脚本并告诉用户出了什么问题。谢谢。。。这很好用。