引数 '-v'および '-x'はbashを意味しますか?


17

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

#!/bin/bash -x -v 

しかし、man bashどのようなこれらの引数を説明していない-x-v、彼らが所属している場合は、静置bashすべてで。

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

回答:


26

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

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

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

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

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

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


OK、それはbashへの単純な引数であり、これらの引数なしで異なるバージョンを持っているかもしれませんか?
アレックス14

bashについて話している場合:過去10年間のすべてのbashリリースがこれらの引数をサポートすると思います。manページについて話している場合:それは巨大であり、あなたが探しているものを知る必要がありますが、それはあります(少なくともUbuntu 13.04では)。通常、Google検索の方が高速です。
mtak 14

6
+1 「Google検索の方が高速です」 -> /-x数回するとそこに到達しますman(実際にはless)。最後の検索を/+上向き矢印で繰り返すことができますが、現在の検索を画面から外すには、ページを下に移動する必要があります(/前方検索、?後方検索)。
goldilocks 14

2
@ TAFKA'goldilocks 'それはあなたのディストリビューションに依存すると思います。Ubuntu 13.04 bashのマニュアルページでは、43番目のヒットが正しいものです。n前方検索とN後方検索を使用することで、次のヒットをより少なく検索するのが簡単になります。
mtak 14

おっと、実際に私が見ていたtest -x、条件式(第三のヒット)の下ではありませんset -x-x中には、man bashより具体的に得ることができますので、かなり悪いケースである:あなたが使用している場合は/^\s+-x\b、(=ライン+空白+の開始-xあなたが5本の安打で右のいずれかを取得+ワード境界)...それは4でしたが、実際のためだろうx試合X...これは私が尋ねることを意味してきた質問に私を導きます。とにかく、ほとんどのマニュアルページで、^\s+-x\bパターンは最初に動作するはずで、スイッチを試します。
goldilocks 14

2

bashのマニュアルページに、これらのオプションが実際にさらに下で説明されているというヒントがありますが、見落とされがちです。

したがって、あなたの問題は実際に読むべきです: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.  [ ... ]

最後に、これは完全なものにする:彼らはすべてのPOSIXシェルのための標準的な選択肢であるとき、スクリプトのコードを示すために読んで-v)とするとき、実行を-x)。出力はstderrに表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.