'-v' 和 '-x' 参数对 bash 意味着什么?

Ale*_*lex 25 bash shebang

我见过几个带有以下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 的参数。 当前的一组选项可以在 中找到$-。除非遇到无效选项,否则返回状态始终为真。

  • +1 *“Google 搜索更快”* -> `/-x` 几次会让你在 `man` 中到达那里(实际上,它是 `less`)。您可以使用 `/` + 向上箭头重复上次搜索,但是您必须向下翻页才能使当前搜索从屏幕上消失(`/` 是向前搜索,`?` 是向后搜索)。 (8认同)
  • @TAFKA'goldilocks' 我想这取决于你的发行版。在 Ubuntu 13.04 bash 手册页中,第 43 次命中是正确的。通过使用 `n` 进行前向搜索和使用 `N` 进行后向搜索,可以更轻松地搜索下一个命中。 (2认同)