-e
旗在巴什舍邦做什么?
#!/bin/bash -e
显然这是一个标志,但不清楚它是什么。
例如,在脚本的头部。
来自 man bash
:
-e Exit immediately if a pipeline (which may consist of a
single simple command), a list, or a compound command
(see SHELL GRAMMAR above), exits with a non-zero sta‐
tus. The shell does not exit if the command that fails
is part of the command list immediately following a
while or until keyword, part of the test following the
if or elif reserved words, part of any command executed
in a && or || list except the command following the
final && or ||, any command in a pipeline but the last,
or if the command s return value is being inverted with
!. If a compound command other than a subshell returns
a non-zero status because a command failed while -e was
being ignored, the shell does not exit. A trap on ERR,
if set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi‐
ronment separately (see COMMAND EXECUTION ENVIRONMENT
above), and may cause subshells to exit before executing
all the commands in the subshell.
If a compound command or shell function executes in a
context where -e is being ignored, none of the commands
executed within the compound command or function body
will be affected by the -e setting, even if -e is set
and a command returns a failure status. If a compound
command or shell function sets -e while executing in a
context where -e is ignored, that setting will not have
any effect until the compound command or the command
containing the function call completes.
因此,如果出现错误,它将立即退出。
使用 set -o errexit(又名 set -e(使脚本在命令失败时退出。
请参考这些文章以获取有关编写良好 bash 脚本的更多信息:
- http://kvz.io/blog/2013/11/21/bash-best-practices/
- http://www.davidpashley.com/articles/writing-robust-shell-scripts/