Bash呼び出しを表示する別の方法

Bash呼び出しを表示する別の方法

このオプションが何を意味するのか理解していないか、bashがオプションなしで同じように動作するようです(標準入力を読み取る対話型シェル)。いつこれらのオプションを明示的に使用したいですか?

答え1

Bash呼び出しを表示する別の方法

リファレンスマニュアルはすでに非常に詳細に説明されています。説明するBashを呼び出す方法について。しかし、私は少し異なる方法で記録することを好みます。

bash <options> <script_file> [<arguments>]
bash <options> -c <command_string> [<arguments>]
bash <options> [-s [<arguments>]

最初の2つは非対話型なので、関連する機能(プロンプト、ジョブ制御、コマンド履歴...)はありません。ただし、これらの機能が必要な場合は、-iフラグを使用して強制できます。

3番目は対話型で、オプションの-sフラグは次の段落で意味があります。

パラメータの指定

例1:基本

-sオプションを使用してパラメータを指定できます。

bash -s a b c

シェルの起動... このシェルでパラメータを確認できます。

echo $1 $2 $2

bashコマンドのパラメータを反映します。

a b c

"-s"オプションがない場合、最初の位置引数はファイル名として解釈されます。

bash a b c

与えられた

bash: a: No such file or directory

例 2: 区切り記号の使用

以前に使用された -s オプションを使用して、区切り文書に引数を指定できます (コマンドを含めるためにファイルを使用したくない場合)。

bash -s a b c <<'EOC'
echo $1 $2 $3
EOC

以下を提供します。

a b c

bashコマンドはheredocのコマンドを実行して終了します。これにより、bashコマンドを呼び出したシェルに戻ります。


例3:パイプライニング

(一部のインラインスクリプトを実装する必要がある場合)パイプラインにbashを含めることを検討し、パラメータの提供の機会を再利用してください。

echo 'echo HELLO $1' | bash -s WORLD

以下を提供します。

HELLO WORLD

これは人工的な例ですが、より複雑なスクリプト(区切り文字を含む!)の場合に便利です。

答え2

私が知っている限り、テスト目的で使用されたようです。スタートアップファイルはそれを使用してステータススクリプトとシェルスクリプトをテストできます。

デフォルトでは、bashシェルを呼び出すときに-iと-sを使用するので、テスト目的でスクリプトまたはファイルを介してこれらのオプションを使用してシェルを明示的に呼び出すことで、通常のログインbashシェルが提供する状態をテストできると仮定します。します。

コメントで指摘されているように、Esrefを呼び出すマニュアルページでこの情報を見つけました。しかし、これは通常の人がやるべきことではないようで、理解するのは簡単ではないかもしれません。

関連情報