シェルプログラミングの変数の置換とは何ですか?

シェルプログラミングの変数の置換とは何ですか?

この質問はあまりにも基本的であり、私自身だけでなく、この用語に初めて接する他の人にも尋ねる。変数の置換そして、次のような考えをしてみてください。

私が知る限り、この言葉は変数の置換「ある変数の値を別の変数の値に置き換えてください」と説明していますが、それが正しいかどうか疑問に思います。
なぜこれを「テキストエディタで手動で編集して変数の値を変更するのですか?」と言うのではなく、特別な用語が必要なのではないかと思います。

何ですか変数の置換シェルプログラミングの概念、答えを知っている場合は、どのような種類のタスクを使用するのか実際の例を挙げてください。

答え1

特定の変数の値を他の変数の値に置き換えます。

この説明は多くの点で間違っています。変数置換の置換名前変数(一部の構文エラーを含む)。また、「in」変数では動作せず、コマンドで動作します。コマンドは変数の値を設定するコマンドですが、これは多くの場合の1つです。

たとえば、このコマンドはecho $foo変数の値を表示します。ソースコードが含まれており、その$foo出力には変数値が含まれていますfoo

これを「変数置換」と呼ぶのは、シェルが一連の文字列(および文字列リスト)変換を介して機能するためです。たとえば、(単純化)コマンドを考えますls -l $dir/*.$ext。これを評価するには、いくつかのことを順番に行う必要があります。

  1. シェルはコマンドを解析し、それを3つの単語(ls-lおよび)に分割し始めます$dir/*.$ext
  2. 3番目の単語では、シェルは2つの変数置換を実行する必要があることを確認します(この文脈では、ドル記号が意味するものはこれです)。diris値とis値を仮定すると、/some/pathシェルは次のように書き換えます。これは、ドル名構文が各変数の値を置き換えるためです。exttxt$dir/*.$ext/some/path/*.txt
  3. シェルはワイルドカードパターンを/some/path/*.txt一致するファイル名のリストに展開します。
  4. シェルは、ls計算されたパラメーターを使用して実行されます。

(文法$foo 変数の値だけを変更しないでください。しかし、それは別の話です。 )

ほとんどのプログラミング言語では、変数の値を取得するには変数名を書くだけです。シェルはインタラクティブに使用するように設計されています。名前を書くとリテラル文字列として解釈されます。これが変数値を取得する構文に「変数値を取得したい」という追加のタグがある理由です。

このタスクでは、単に「テキストエディタで手動で編集して変数の値を変更します」と言うのではなく、特別な用語が必要なのはなぜですか?

変数置換は、変数値の変更とは関係ありません。変数の値を変更する仕事

もちろん、他のコマンドと同様に、代入に変数置換を含めることができます。しかし、変数置換は代入のために特別に設計されたものではありません。

また、エディタを使用して変数の値を変更することはできません。宣言された変数はすべてのプロセスで値を持ち、システム構成ではありません。構成ファイルを使用して設定できます。初期の変数の値はエディタを使用してこれらのファイルの初期値を変更できますが、後で値を変更できます。

関連情報