【问题标题】:Can I make "bash -x" not print the "+ " prefix?我可以让“bash -x”不打印“+”前缀吗?
【发布时间】:2021-01-25 13:41:16
【问题描述】:

当我使用 -x 选项调用 bash 时,它会在执行之前打印每个命令。但是 - 命令打印时带有“+”前缀。

有没有办法让它打印命令,但是没有这个前缀?有-x 还是没有它?

【问题讨论】:

    标签: bash command-line instrumentation verbose


    【解决方案1】:

    您可以在使用bash -x 时通过设置变量 PS4 来自定义前缀。所以在你的 .bashrc 中,你可以有这样的东西:

    export PS4=''
    

    或者,如果你想调试一些东西,让它像这样打印行号:

    export PS4='[ $LINENO ] '
    

    【讨论】:

      【解决方案2】:

      作为第一行插入:

      set -v
      

      然后在没有 -x 的情况下运行它

      【讨论】:

      • set -v 打印的内容与 set -x 不同——它打印命令 before 变量等被扩展。例如,如果您有var="value" 和命令echo {1..2} "$var",则使用set -x 会打印+ echo 1 2 value,但使用set -v 会打印echo {1..2} "$var"。
      • @GordonDavisson set -v 实际上会在读取原始输入 lines 时打印它们;它不会在扩展之前或之后打印 commands。将for i in 1 2 3; do echo $i; done 与set -x 和set -v 进行比较。
      猜你喜欢
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多