Bashは入力をどのように読みますか?

Bashは入力をどのように読みますか?

Bashリファレンスマニュアルを読むときシェル操作、それは言う:

  1. これらの入力は、ファイル(シェルスクリプトを参照)、-c呼び出しオプション(Bash呼び出しを参照)の引数として提供される文字列、またはユーザー端末から読み取られます。

私の質問は次のとおりです。

  1. 入力を読む3つの方法の違いは何ですか?
  2. スクリプトにパラメータがある可能性がありますか?良い$ ./script arg1 arg2 ...

いくつかのコマンドを入力すると、端末は次のようになります。

$ command1 arg1 arg2 ...

command1Bashは、それがスクリプト(スクリプトの内容を読む)ではなく実行可能ファイル(追加処理なしで実行のみ)であるかどうかをどうやって知ることができますか?

ベストアンサー1

  1. 主な違いは、端末から読み取るとシェルがプロンプトを表示することです。そうでなければ違いはありません

    $ echo ls > script
    $ bash script
    script
    $ bash -c ls
    script
    $ ls
    script
    

    シェルは対話式に実行されているかどうかを知っており、これによって一部のコマンドが異なる動作をする可能性があります。

  2. はい、これは非常に一般的なことです。文字列の引数は位置引数を埋めます。$@$1。で検索してください。$2man bash

    のパラメータ、関数、およびエイリアスを参照してくださいman bash。簡単に言えば、を実行すると、command1 arg1 arg2bashは最初にエイリアスを拡張し、結果を実行するか、関数を実行しようとcommand1command1ます$PATH

おすすめ記事