web-dev-qa-db-ja.com

`set -x`は何をするの?

次のような行を含むシェルスクリプトがあります。

[ "$DEBUG" == 'true' ] && set -x
153
Ole

set -xは、実行されたすべてのコマンドが端末に表示されるシェルのモードを有効にします。あなたのケースでは明らかにデバッグに使われています。これはset -xの典型的なユースケースです。実行されるたびにすべてのコマンドを表示することはスクリプトの制御フローを思い通りに機能しない場合に視覚化するのに役立ちます。

219
John Zwinck

set -x

コマンド、caseコマンド、selectコマンド、コマンドとその引数、または関連するWordリストについて、展開されてから実行されるまでの間に、単純なコマンドのトレースを印刷します。 PS4変数の値が展開され、その結果の値がコマンドとその展開された引数の前に出力されます。

set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30

set +x
echo `expr 10 + 20 `
30

上の例はset -xの使い方を示しています。それが使われるとき、上の算術式は拡張されました。単線がどのように段階的に評価されたかを見ることができます。

  • 最初のステップexprが評価されました。
  • 2番目のステップechoが評価されました。

セットについてもっと知りたい方は→→ このリンク をご覧ください

シェルスクリプトに関しては、

[ "$DEBUG" == 'true' ] && set -x

実行モードがDEBUGとして選択されている場合、スクリプトは追加の情報行を出力している可能性があります。スクリプトが-dのようなオプションの引数で呼ばれたとき、伝統的に人々はデバッグモードを有効にするために使用していました

55
Raju