一般に、シェルスクリプト、特にBashの「パラメータ拡張」(「変数拡張」とも呼ばれます)とは何ですか?

一般に、シェルスクリプト、特にBashの「パラメータ拡張」(「変数拡張」とも呼ばれます)とは何ですか?

私は、「パラメータ拡張」(「変数拡張」とも呼ばれる)という用語が以下を意味することを理解しています。傘の用語一般的には、特に次のように、Bash には関係しないいくつかのシェルスクリプト操作があります。

  1. 変数の置換。
  2. 同じ行に複数の値がある場合、行は分割されます。
  3. 特定の範囲内のワイルドカード変数。

おそらくもっとあるかもしれません。

用語の後ろに隠された哲学を正しく理解したら、変数を単純な変数からより影響力のあるデータフロー(値の置換など)に「拡張」します。これで、変数が何かを実行した変数に拡張されました。

私の質問:

一般に、用語を十分に正確に理解していますか?回答に言及する必要があるこの包括的な用語に基づく他のタスクはありますか?

答え1

変数拡張とも呼ばれるパラメータ拡張は、修飾子を適用して型をパラメータ値に置き換える構文構造です。$parameter${parameter}

シェルがコマンドラインを読み取るとき、行を単語に分割し、さまざまな拡張を実行する(パラメータ拡張はそのうちの1つです)、リダイレクトを適用するなど、明確に定義されたいくつかの手順でコマンドラインを処理します。たとえば、Bashシェルは最初に行を単語に分割します。次に、左から右に中括弧拡張、チルダ拡張、パラメータと変数拡張、算術拡張、コマンド置換、およびプロセス拡張を実行し、最後の単語分割とパス名拡張を実行します。

「可変印刷」とはどういう意味なのか理解できません。

Globbing または Bash ドキュメントで「パス名拡張」と呼ぶことが発生します。後ろに変数拡張;シェルは文字があるかどうかをコマンドラインの各単語をチェックし、それらのいずれかが見つかる*と、その単語をパターンと見なし、特定の構成に従って一致するファイルのリストに置き換えます。オプション。?[

詳細については、シェルのマニュアルページを参照してください。たとえば、Bashについては読むことができます。マニュアルページ、これ参考書、これ高度なスクリプトガイドそして他の多くの資料。

答え2

私が知る限り、変数拡張のようなものはありません。

変数とシェル(引数)拡張があります(参照:ここ)。

変数は、名前を付けて参照できる文字列または数値です。

myVariable=2

シェルパラメータ拡張は、シェルが入力を受け取り、それを実行する前に特定のルールを適用するプロセスです。だから同時に:

echo $myVariable

有効な実行コマンドではありません。なぜなら、bashは$ myVariableの現在の値が実際に2であることを理解するために変数リストを参照しなければならないいくつかのテキストが次にあることを「知っている」からです。

echo 2

シェル拡張を理解する全体的なプロセスは、 bash が特定の構文を拡張するために使用する一連の規則と、二重引用符 ("")、一重引用符 ('')、または逆引用符 (``) を使用するときにこれらの規則を変更します。方法を理解することです。 。

関連セクションを注意深く読んでください。バッシュリファレンスマニュアルそしてターミナルでのいくつかの練習。

関連情報