bash -x
私は最近、同僚が私に邪魔されずにbashスクリプトをデバッグする方法を示しましたecho $foo
。
$ bash -x hello-world.sh
+ echo 'Hello World'
Hello World
内部的に - bashはこれをどのように達成しますか?確認してみると、通訳を呼び出すときにそのフラグが言及されているman bash
ようです(違うと思いますか?)。-x
私は、主に環境でデバッグする項目と、デバッグしない項目の概要や-x
その他の質問を探しています。
答え1
-x
xtrace
-o
Bashオプションの設定と同じです。 bashのマンページのコピーから:
別に展開した後簡単なコマンド、~のため注文する、ケース注文する、選ぶ命令または算術~のため拡張値を表示するコマンドPS4、その後にコマンドと拡張パラメータ、または関連する単語のリストが続きます。
私はこれに多くの「問題」があるとは思わない。実行するすべてのコマンドを印刷します。シェルスクリプトの出力を解析する場合、stderr
コマンドは(別名ファイル記述子2)に印刷されるため、状況は混乱する可能性がありますが、stderr
これは極端なケースのようです。
(内部スクリプトまたはインタラクティブシェルセッション内でこの機能を条件付きで有効にして、再びオンとオフを切り替えることもset -x
できset +x
ます。)