bash的-v和-x调试选项有什么区别?

时间:2016-11-14 03:14:31

标签: bash debugging

-x表示xtrace,-v表示详细。

在研究时,我发现bash -x“扩展命令”,而-v在执行之前将整个命令打印到stdout。

我在测试时看到的唯一区别是bash -v也会显示每个命令的注释。

这真的是唯一的区别吗?有人可以详细说明吗?

1 个答案:

答案 0 :(得分:1)

从手册:

  -v  Print shell input lines as they are read.
  -x  Print commands and their arguments as they are executed.

在查看管道命令的处理方式时,您可以看到这种区别:

$ set -v
$ echo "Hello World" | sed 's/World/Earth/'
echo "Hello World" | sed 's/World/Earth/'
Hello Earth

$ set -x
$ echo "Hello World" | sed 's/World/Earth/'
    + sed s/World/Earth/
    + echo 'Hello World'
    Hello Earth

此外,似乎xtrace(-x)使用$ PS4变量,而verbose(-v)则不使用。