Bash" set -e"的功能是什么?

时间:2016-04-27 09:19:31

标签: bash

在bash脚本中有什么用途

set -e

我希望它与环境变量有关,但我没有在

之前遇到它

3 个答案:

答案 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.

您也可以将ex选项合并为set -ex,其中:

  

-x在执行时打印命令及其参数。

这可以帮助您调试bash脚本。

<强>参考Set Manpage