【发布时间】:2021-01-25 13:41:16
【问题描述】:
当我使用 -x 选项调用 bash 时,它会在执行之前打印每个命令。但是 - 命令打印时带有“+”前缀。
有没有办法让它打印命令,但是没有这个前缀?有-x 还是没有它?
【问题讨论】:
标签: bash command-line instrumentation verbose
当我使用 -x 选项调用 bash 时,它会在执行之前打印每个命令。但是 - 命令打印时带有“+”前缀。
有没有办法让它打印命令,但是没有这个前缀?有-x 还是没有它?
【问题讨论】:
标签: bash command-line instrumentation verbose
您可以在使用bash -x 时通过设置变量 PS4 来自定义前缀。所以在你的 .bashrc 中,你可以有这样的东西:
export PS4=''
或者,如果你想调试一些东西,让它像这样打印行号:
export PS4='[ $LINENO ] '
【讨论】:
作为第一行插入:
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"。
set -v 实际上会在读取原始输入 lines 时打印它们;它不会在扩展之前或之后打印 commands。将for i in 1 2 3; do echo $i; done 与set -x 和set -v 进行比较。