web-dev-qa-db-ja.com

「set -x」はbashスクリプトで何をしますか?

私はbashスクリプトを読んでいて、それはset -xで始まります。私はググってみましたが、特に-xにすべてのフラグを詳細に説明しているマニュアルは見つかりませんでした。

ここで質問をする前に彼の研究をしなかったように聞こえますが、set -xについて何の情報も見つけられなかったことを心からお詫び申し上げます。何か案は?

10
Lost

help setさんのコメント:

      -x  Print commands and their arguments as they are executed.

インタラクティブシェルと非インタラクティブシェルの両方で機能するため、インタラクティブシェルでset -xを実行して効果を確認できます。実行される各コマンドは最初にエコーされます(それらの前に+記号を付けて、ほとんどの通常の出力と区別できるようにします)。

ek@Cord:~$ echo hello world
+ echo hello world
hello world

(インタラクティブシェルよりもはるかに多くの出力が表示される場合は、シェルがコマンドを実行してプロンプトを作成している可能性があります。たとえば、プロンプトがgitリポジトリに関する情報を表示するように設定されている場合、約20行が追加で表示されます。実際にリポジトリにいない場合でも、ナビゲートされます。)

オフにするには、set +xを実行します。やや混乱しますが、setを使用すると、-はシェルオプションを有効にし、+はそれを無効にします。

詳細については、 Bashリファレンスマニュアル4.3.1 Set Builtin を参照してください。

9
Eliah Kagan