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
在脚本的顶部。