
次のshebangを含むいくつかのシェルスクリプトを見ました。
#!/bin/bash -x -v
しかし、これらの引数が何を意味するのかman bash
についての説明はまったくありません。-x
-v
bash
それでは、これらの-x
合計-v
(および他の可能な主張)はどういう意味ですか?
答え1
(はいman bash
、大きなマニュアルページなので、通常はGoogleで検索する方が高速です):
-x
各単純命令、命令については、ケース命令、選択命令、または命令の算術が拡張された後、PS4の拡張値が表示され、その後に命令と拡張引数または関連する単語のリストが表示されます。
有効:スクリプトを実行すると、スクリプト内で完了したすべてのタスクが表示されます。したがって、すべてのifs、ループ、およびコマンドが実行されます。デバッグに非常に便利です。
-v
読み取ったようにシェル入力行を印刷します。スクリプトを実行すると、ファイルの読み込み中にスクリプト全体が印刷されます。シェルを対話的に使用している場合は、Enterキーを押すと各コマンドが表示されます。
上記の引用は、組み込みset
コマンドの説明からのものですman bash
。また、オプションをset
引数として渡すこともできます(shebang行から)。
特に明記しない限り、これらのオプションはデフォルトでオフになっています。
+
代わりに使用すると、-
これらのオプションはオフになります。 オプションは、シェル呼び出しの引数として指定することもできます。 現在のオプションセットはで見つけることができます$-
。無効なオプションが発生しない限り、戻り状態は常に true です。
答え2
バッシュのマニュアルページするこれらのオプションは実際には以下で詳しく説明しますが、見落とされがちです。
したがって、あなたの質問は実際には次のようになります。 bash のマニュアルページの 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に表示されます。