在bash脚本中有什么用途
set -e
我希望它与环境变量有关,但我没有在
之前遇到它答案 0 :(得分:3)
引自help set
-e Exit immediately if a command exits with a non-zero status.
,一旦遇到任何以非0(失败)退出代码退出的命令,脚本或shell就会退出。
任何失败的命令都会导致shell立即退出。
举个例子:
打开终端并输入以下内容:
$ set -e
$ grep abcd <<< "abc"
一旦你在grep
命令后按Enter键,shell就会退出,因为grep
以非0状态退出,即它在文本{{1}中找不到正则表达式abcd
}
注意:要取消设置此行为,请使用abc
。
答案 1 :(得分:1)
man bash
说
如果一个简单的命令(参见上面的SHELL GRAMMAR)退出非零,则立即退出 状态。如果失败的命令是命令列表的一部分,则shell不会退出 紧跟一段时间或直到关键字,if语句中的部分测试, &amp;&amp;和或││列表,或者命令的返回值是通过!反转的。一个 如果设置了ERR,则在shell退出之前执行。
如果你想避免在bash脚本中测试每个命令的返回码,这是获得“快速失败”行为的超级方便方法。
答案 2 :(得分:0)
假设脚本下面的当前目录中没有名为 trumpet 的文件:
#!/bin/bash
# demonstrates set -e
# set -e means exit immediately if a command exited with a non zero status
set -e
ls trumpet #no such file so $? is non-zero, hence the script aborts here
# you still get ls: cannot access trumpet: No such file or directory
echo "some other stuff" # will never be executed.
您也可以将e
与x
选项合并为set -ex
,其中:
-x在执行时打印命令及其参数。
这可以帮助您调试bash脚本。
<强>参考强>:Set Manpage