我见过几个带有以下shebang的shell脚本:
#!/bin/bash -x -v
Run Code Online (Sandbox Code Playgroud)
但是,如果它们完全属于,man bash则不会解释这些论点-x和-v代表什么bash。
那么这些-x和-v(以及其他可能的论点)是什么意思?
mta*_*tak 32
来自man bash(是的,这是一个很大的手册页,通常谷歌搜索更快):
-x展开每个简单命令后,for command、case 命令、select 命令或算术for 命令,显示PS4 的展开值,后面是命令及其展开的参数或关联的单词列表。
有效:当您运行脚本时,它将显示在该脚本中完成的所有操作。所以所有的 ifs、循环和命令都会运行。对调试非常有用。
-v在读取 shell 输入行时打印它们。运行脚本时,它将在读取文件时打印整个脚本。当您以交互方式使用 shell 时,它会在您按 Enter 后显示每个命令。
上面的引号来自 中set内置命令的解释man bash,这也解释了 的选项set也可以作为参数传递(在 shebang 行上):
除非另有说明,否则这些选项默认关闭。使用
+而不是-导致这些选项被关闭。 这些选项也可以指定为调用 shell 的参数。 当前的一组选项可以在 中找到$-。除非遇到无效选项,否则返回状态始终为真。