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


17

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

#!/bin/bash -x -v 

但是,man bash并不能说明什么,这些论点-x-v主张,如果他们是属于bash所有。

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

Answers:


26

man bash(是的,这是一个很大的手册页,通常Google搜索速度更快):

-x 展开每个简单命令(对于命令,大小写命令,选择命令或对命令的算术)后,显示PS4的扩展值,然后显示该命令及其扩展的参数或关联的单词列表。

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

-v 读取时打印外壳输入行。运行脚本时,它将在读取文件时打印整个脚本。交互式使用外壳程序时,按Enter键后将显示每个命令。

上面的引号来自的set内置命令的说明,该说明man bash还说明的选项set也可以作为参数传递(在shebang行上):

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


好的,这是bash的一个简单参数,如果没有这些参数,我可能会有一个不同的版本?
Alex

如果您正在谈论bash:我认为过去十年中所有bash版本都将支持这些论点。如果您正在谈论手册页:它非常庞大,您需要知道您要查找的内容,但是它在那里(至少在Ubuntu 13.04上如此)。通常,使用Google搜索会更快。
mtak 2014年

6
+1 “ Google搜索速度更快” -> /-x几次,您就会到达那里man(实际上是less)。您可以使用/+向上箭头重复上一次搜索,但是您必须向下翻页才能使屏幕上出现任何当前搜索(/向前搜索,?向后搜索)。
goldilocks 2014年

2
@ TAFKA'goldilocks'我想这取决于您的发行版。在Ubuntu 13.04 bash手册页中,第43个匹配项是正确的。通过使用n正向搜索和N反向搜索,可以更轻松地搜索下一个匹配。
mtak 2014年

哎呀,实际上我是test -x在条件表达式(第三击)下查看的,不是set -x-xin man bash是一个非常糟糕的情况,因此获得更具体的帮助:如果使用/^\s+-x\b,(=行首+空格+ -x+单词边界),您将获得正确的5分之一的匹配...本来应该是4,但事实x匹配X...这使我想到了一个我一直想问的问题。无论如何,带大多数手册页的^\s+-x\b模式应该首先尝试进行切换。
goldilocks 2014年

2

bash手册页的确暗示了这些选项的详细说明,但实际上很容易被忽略。

因此,您的问题应实际阅读:bash手册页的OPTIONS部分不完整。答案是复制它们,或突出显示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上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.