web-dev-qa-db-ja.com

「bash -x」とは

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

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

内部的に-bashはこれをどのように実現しますか? man bashを確認しましたが、インタプリタを呼び出すときに-xフラグについて言及しているようです(そうではないようです)。私は主に、-x環境でデバッグされるものとデバッグされないもの、またはその他の問題の概要を探しています。

3
Alan Storm

-xxtrace-oオプションでbashに設定するのと同じです。私のbashのマンページから:

を展開した後、単純なコマンドforコマンド、caseコマンド、selectコマンド、または算術forコマンドは、PS4の展開された値を表示し、その後にコマンドとその展開された引数または関連するWordリストを表示します。

これには「問題」があるとは思いません。実行する各コマンドを出力します。

(この内部スクリプトまたはインタラクティブシェルセッションでset -xをオンにしてオンに、set +xをオフにしてオフにすることもできます。)

6
Ben Stern