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