web-dev-qa-db-ja.com

引数「-v」と「-x」は、bashとはどういう意味ですか?

次のシバンのシェルスクリプトをいくつか見ました。

#!/bin/bash -x -v 

しかしながら、 man bashはこれらの引数について説明していません-xおよび-vは、それらがbashに属している場合に限ります。

だから何それら-xおよび-v(および他の可能な引数)はどういう意味ですか?

17
Alex

man bashから(はい、大きなmanページです。通常、Google検索の方が高速です):

-xコマンド、ケースコマンド、選択コマンド、またはコマンドの算術の各単純なコマンドを展開した後、PS4の展開された値を表示し、その後にコマンドとその展開された引数または関連するWordリストを表示します。

効果的に:スクリプトを実行すると、そのスクリプトで実行されたすべてのアクションが表示されます。したがって、すべてのif、ループ、コマンドが実行されます。デバッグに非常に役立ちます。

-v読み取られたシェル入力行を印刷します。スクリプトを実行すると、ファイルを読み取るときにスクリプト全体が印刷されます。シェルをインタラクティブに使用すると、Enterキーを押すと、各コマンドが表示されます。

上記の引用はman bashの組み込みコマンドsetの説明からのもので、setのオプションも引数として渡すことができることを説明しています(Shebang行で) :

特に記載がない限り、オプションはデフォルトでオフになっています。 +ではなく-を使用すると、これらのオプションがオフになります。 オプションは、シェルの呼び出しの引数として指定することもできます。現在のオプションのセットは、$-にあります。無効なオプションが検出されない限り、戻りステータスは常にtrueです。

26
mtak

Bashのmanページdoesこれらのオプションは実際にはさらに下で説明されていますが、見落とされがちです。

したがって、問題は実際には次のようになります。bashのmanページのOPTIONSセクションが不完全です。答えは、それらを複製するか、OPTIONSセクションの最初のセクションを強調表示することです。

OPTIONS
   All  of  the  single-character Shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  Shell
   is invoked.  [ ... ]

最後に、これを完全にするために、これらはread-v)およびrun-x)。出力はstderrに表示されます。

3
Henk Langeveld