我找到一个脚本,并尝试运行它,它只是下载并安装 Apache 运行时库。第一行是set -e
,它导致错误;它set -e
做什么?
答案1
这个内置函数非常复杂,值得用一个单独的部分来描述。
set 允许您更改 shell 选项的值和设置位置参数,或者显示 shell 变量的名称和值。
选项-e
-e
如果管道(请参阅管道)返回非零状态,则立即退出,管道可能由单个简单命令(请参阅简单命令)、括号内的子 shell 命令(请参阅命令分组)或括号内命令列表的一部分执行的命令之一组成(请参阅命令分组)。如果失败的命令是紧跟 while 或 till 关键字的命令列表的一部分、if 语句中测试的一部分、&& 或 || 列表中执行的任何命令的一部分(最后一个 && 或 || 之后的命令除外)、管道中除最后一个命令之外的任何命令,或者命令的返回状态用 ! 反转,则 shell 不会退出。如果设置了 ERR 陷阱,则在退出 shell 之前执行。
此选项分别适用于 shell 环境和每个子 shell 环境(请参阅命令执行环境),并且可能导致子 shell 在执行完子 shell 中的所有命令之前退出。
来源:gnu.org
根据下面@psusi 的评论进行了编辑。
另外,你可以阅读 bash 的手册页
man bash
在以下部分:SHELL BUILTIN COMMANDS
或问题
help set
获取简短的帮助信息。
答案2
set -e
简而言之,当它位于 Bash 脚本的顶部时,它会告诉脚本在脚本中的任何行失败时立即退出(手册中列出了一些例外情况)。[1]
作为调试选项,它经常与 一起使用set -x
,即在执行前用“+”号打印每个扩展的命令行。[2]
更多信息请访问:
[1]https://www.peterbe.com/plog/set-ex
[2]http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html