web-dev-qa-db-ja.com

`set-v`出力の表示のフォーマット

setbashページの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
2
mbigras

そのような出力を取得するには、 $BASH_COMMAND 例:追加

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

の代わりに set -x/vスクリプトの上部にあります。

3
don_crissti