在shell脚本中设置-e和set -x

Bak*_*kya 7 linux shell command

给予有什么不同

set -e set -x

set -xe

我对这些做出了不同的回应.请帮我澄清一下

g10*_*ang 8

set -x
Run Code Online (Sandbox Code Playgroud)

在执行之前打印shell命令。此功能可帮助程序员跟踪其Shell脚本。

set -e
Run Code Online (Sandbox Code Playgroud)

如果一个命令的返回码不为0,并且调用者未对其进行检查,则shell脚本将退出。此功能使Shell脚本更强大。

set -eset -x经常出现在shell脚本的开头:

set -x
set -e

echo "I am a shell script."
Run Code Online (Sandbox Code Playgroud)

或用作shell命令:

sh -xe shell_script.sh
Run Code Online (Sandbox Code Playgroud)

参考:http//julio.meroh.net/2010/01/set-e-and-set-x.html


Tho*_*key 5

大概你在谈论bash。根据它的手册-e(参见第4.3.1 节)告诉 bash 在某些条件下退出(这可能适用于您的脚本)。如果是这种情况,“ set -xe”可能会在退出前打印更多的跟踪信息,而不是“ set -e”后跟“ set -x”。