参数“-v”和“-x”对于 bash 意味着什么?

参数“-v”和“-x”对于 bash 意味着什么?

我见过几个带有以下 shebang 的 shell 脚本:

#!/bin/bash -x -v 

然而,man bash没有解释这些论点-x-v代表什么,如果它们属于的bash话。

那么这些-x-v(以及其他可能的论点)是什么意思呢?

答案1

来自man bash(是的,这是一个很大的手册页,通常谷歌搜索更快):

-x 展开每个简单命令、for 命令、case 命令、select 命令或算术 for 命令后,显示 PS4 的展开值,后跟该命令及其展开参数或关联的单词列表。

有效:当您运行脚本时,它将显示该脚本中完成的所有操作。因此所有 if、循环和命令都会运行。对于调试非常有用。

-v 在读取 shell 输入行时打印它们。运行脚本时,它将在读取文件时打印整个脚本。当您以交互方式使用 shell 时,按 Enter 键后它将显示每个命令。

上面的引号来自set中内置命令的解释man bash,这也解释了 的选项set也可以作为参数传递(在 shebang 行上):

除非另有说明,这些选项默认处于关闭状态。使用+ 而不是-会导致这些选项被关闭。 还可以将选项指定为 shell 调用的参数。 当前的选项集可以在 中找到$-。除非遇到无效选项,否则返回状态始终为 true。

答案2

bash 手册页暗示这些选项实际上在下面进一步解释,但很容易被忽视。

因此,您的问题实际上应该是: bash 手册页的 OPTIONS 部分不完整。答案是复制它们,或者突出显示选项部分的第一部分:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

最后,为了完成这个任务:它们是任何 POSIX shell 的标准选项,用于在以下情况下显示脚本的代码:-v) 什么时候跑步( -x)。输出将出现在 stderr 上。

相关内容