`bash -x`とは

最近、同僚がbash -xを紹介して、bashスクリプトを取得せずにデバッグしました。 echo $fooルート。

$ bash -x hello-world.sh + echo "Hello World" Hello World 

内部的に-bashはこれをどのように達成しますか? man bashを確認したところ、インタプリタを呼び出すときに-xフラグが表示されていました(そうではありませんでしたか?)。主に探しています。 -x環境またはその他の落とし穴でデバッグされるものとされないものの概要。

回答

-xは、-oxtraceを設定するのと同じです。 bashのdiv>オプション。bashマンページのコピーから:

単純なコマンドを展開した後、 for コマンド、 case コマンド、 select コマンド、または

コマンドで、 PS4 の展開値を表示し、その後にコマンドとその展開引数を表示しますtsまたは関連する単語リスト。

これには多くの「落とし穴」はないと思います。実行する各コマンドを出力します。シェルスクリプトからのstderr出力を解析している場合、コマンドがstderrに出力されるため、これが混乱する可能性があると思います。 (別名ファイル記述子2)、しかしそれは極端なケースのようです。

(スクリプト内またはset -xを使用したインタラクティブシェルセッションでこれを条件付きで有効にすることもできます。オンにし、set +xでオフにします。)

コメント

  • Oof。ありがとうございます。 。set help-x Print commands and their arguments as they are executed.とだけ言っています。'方法について何も見つかりませんでした現在のシェルで設定を解除します。
  • @sherrellbc:set helpは位置パラメータをhelpであり、'は何も出力しません。help setは、

、およびtそのリストの最後には、Using + rather than - causes these flags to be turned off.

と書かれています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です