Shell 脚本中的“-xe”和 Shebang (#!/bin/bash) 代表什么?

Zai*_*een 2 bash shell shebang

我复制了一个 shell 脚本,它非常简单,但在 shebang 的第一行,-xe指定了标志。

#!/bin/bash -xe
Run Code Online (Sandbox Code Playgroud)

谁能解释一下它有什么作用?我进行了搜索,但找不到任何帮助材料。

Léa*_*ris 7

这是向 shebang 添加 shell 选项:

\n
    \n
  • -x, -o xtrace: 跟踪显示执行的语句。
  • \n
  • -e, -o errexit:出错时退出,但与旧版 POSIX 合规性不一致。
  • \n
\n
#!/bin/bash -xe\n
Run Code Online (Sandbox Code Playgroud)\n

这种 Shebang 设置结合了两种不鼓励的不良做法及其自身的一系列问题:

\n
    \n
  1. 第一个不好的做法是在 shebang 中设置 shell 选项;因为这意味着直接使用: 调用脚本时它们将被忽略bash script_name,而不是使脚本文件可执行,然后调用./script_name.
    \n选项应在代码中使用 显式设置set -x,或者最好使用其更直接的长名称(例如:set -o xtrace而不是set -x)。
  2. \n
  3. 第二个不好的做法是使用-e选项 or ,set -o errexit该选项仅用于遗留 POSIX 合规性,但在不同情况下表现不一致;它导致的错误比它避免的错误还要多。
  4. \n
\n

set -e以下是关于这些、set -o errexit怪癖和问题的一些参考:

\n\n