「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スクリプトの上ではない

関連情報