我见过 bash shell 脚本在其他命令之前有这个。
我知道是什么set -x
;然而,当我尝试时-xe
,似乎没有任何改变。
有谁知道它是做什么的?我似乎找不到任何有关它的文档。
答案1
该文档位于4.3.1 内置集合
-e 是:
如果管道(请参阅管道)(可能由单个简单命令(请参阅简单命令)、列表(请参阅列表)或复合命令(请参阅复合命令)组成)返回非零状态,请立即退出。如果失败的命令是紧跟在 while 或 Until 关键字之后的命令列表的一部分、if 语句中测试的一部分、&& 或 || 中执行的任何命令的一部分,则 shell 不会退出。列出除最后一个 && 或 || 后面的命令之外的管道中除最后一个命令之外的任何命令,或者命令的返回状态与 ! 反转。如果子 shell 之外的复合命令由于在忽略 -e 时命令失败而返回非零状态,则 shell 不会退出。如果设置了 ERR 陷阱,则会在 shell 退出之前执行。
此选项分别适用于 shell 环境和每个子 shell 环境(请参阅命令执行环境),并且可能会导致子 shell 在执行子 shell 中的所有命令之前退出。
如果复合命令或 shell 函数在忽略 -e 的上下文中执行,则复合命令或函数体内执行的任何命令都不会受到 -e 设置的影响,即使设置了 -e 并且命令返回故障状态。如果复合命令或 shell 函数在忽略 -e 的上下文中执行时设置 -e,则在复合命令或包含函数调用的命令完成之前,该设置不会产生任何效果。