Bashの「set -v」は中括弧内のコマンドを標準出力に反映しません。

Bashの「set -v」は中括弧内のコマンドを標準出力に反映しません。

次のテストスクリプトがあります。

# test.bash
#----------
{

   set -v # Echoes the following 3 parameters
   DELAY_MS=2000
   SCALING=false
   VERBOSE=false
   set +v

   echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST

} 2>&1 | tee test.bash.out

3つの変数を設定し、出力ラインをエコーし​​ますTEST。以降、set -v3つの変数設定をミラーリングしたいと思います。標準出力そしてtee喜んでtest.bash.out。しかし、Bashコンソールまたはtest.bash.out

なぜ現れないのですか?

変数を表示する簡単な方法はありますか?標準出力

答え1

set -v(の略set -o verbose)ソースコードライン印刷読むときそして、シェルが中括弧内の何かを実行する前に、すべてを読んで&最後にリダイレクトやパイプなどがあるかどうかを調べる必要があります。 (そして}それは完全に必要ではないと思うかもしれませんが、どこかに一致するものがあることを確認してください。)

殻が何であるか見たい場合実装する、代わりにset -x(またはset -o xtrace)を使用してください。

関連情報