格式化“set -v”输出的显示

格式化“set -v”输出的显示

set从页面的描述来看bash man

-v   Print shell input lines as they are read.

因此,以下示例脚本:

#!/usr/bin/env bash
# setv.sh
set -v
foo=bar
echo $foo

生成输出:

foo=bar
echo $foo
bar

有没有办法让它在每一行前面添加一些字符串,例如“+”,以便清楚地指示哪一行是脚本中的一行,以及哪一行是脚本中一行的输出。使用上面的示例,所需的输出将是:

+ foo=bar
+ echo $foo
bar

答案1

要获得这种输出,您可以使用$BASH_COMMAND例如添加

trap 'printf "%s %s\n" + "$BASH_COMMAND" >&2' DEBUG

而不是set -x/v在脚本的顶部。

相关内容