“-e”开关从 bash shebang 做什么

  • 本文关键字:shebang bash 开关 bash
  • 更新时间 :
  • 英文 :


-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/

最新更新