Was ist Variablensubstitution in der Shell-Programmierung?

Was ist Variablensubstitution in der Shell-Programmierung?

Diese Frage ist sehr grundlegend und ich stelle sie nicht nur für mich selbst, sondern auch für andere Neulinge, die den BegriffVariablensubstitutionund habe folgende Gedanken:

Soweit ich weiß, ist der BegriffVariablensubstitutionbeschreibt „den Wert einer Variablen durch eine andere ersetzen“, aber ich bezweifle, dass das richtig ist.
Ich habe mich gefragt, warum diese Aktion einen speziellen Begriff erfordert, anstatt nur zu sagen „den Wert einer Variablen ändern, indem man ihn manuell in einem Texteditor bearbeitet“?

Was istVariablensubstitutionKonzept in der Shell-Programmierung und wenn Sie die Antwort kennen, geben Sie bitte ein praktisches Beispiel dafür, welche Arten von Aktionen Sie bei Ihrer Arbeit verwenden.

Antwort1

Ersetzen des Wertes einer gegebenen Variablen durch eine andere.

Diese Beschreibung ist aus mehreren Gründen falsch. Die Variablensubstitution ersetzt dieNameeiner Variablen (plus etwas syntaktischem Unsinn) durch ihreWert. Außerdem wird nicht „in“ einer Variablen gearbeitet, sondern in einem Befehl. Der Befehl könnte einer sein, der den Wert einer Variablen setzt, aber das ist nur ein Fall unter vielen.

Beispielsweise echo $foozeigt der Befehl den Wert der Variablen an. Der Quellcode enthält $foound die entsprechende Ausgabe enthält den Wert der Variablen foo.

Der Grund, warum dies „Variablensubstitution“ genannt wird, liegt darin, dass die Shell mit einer Reihe von Transformationen von Zeichenfolgen (und Zeichenfolgenlisten) arbeitet. Betrachten Sie beispielsweise (vereinfacht) den Befehl ls -l $dir/*.$ext. Um ihn auszuwerten, passieren mehrere Dinge nacheinander:

  1. Die Shell beginnt mit der Analyse des Befehls und teilt ihn in drei Wörter auf: ls, -lund $dir/*.$ext.
  2. Im dritten Wort sieht die Shell zwei auszuführende Variablensubstitutionen (das bedeuten die Dollarzeichen in diesem Zusammenhang). Angenommen, der Wert von dirist /some/pathund der Wert von extist txt, dann schreibt die Shell $dir/*.$extin um /some/path/*.txt. Dies ist eine Substitution, da der Wert jeder Variablen durch die Dollarnamenssyntax ersetzt wird.
  3. Die Shell erweitert das Platzhaltermuster /some/path/*.txtzur Liste der übereinstimmenden Dateinamen.
  4. Die Shell wird lsmit den berechneten Argumenten ausgeführt.

(Die Syntax$foo tut mehr als nur den Wert einer Variablen zu ersetzenaber das ist eine andere Geschichte.)

In den meisten Programmiersprachen müssen Sie zum Abrufen des Wertes einer Variablen nur den Namen der Variable eingeben. Die Shell ist für die interaktive Verwendung konzipiert. Wenn Sie einen Namen eingeben, wird dieser als wörtlicher String interpretiert. Aus diesem Grund enthält die Syntax zum Abrufen des Wertes einer Variable einen zusätzlichen Marker, der besagt: „Ich möchte den Wert einer Variable abrufen.“

warum erfordert diese Aktion einen speziellen Begriff, anstatt nur zu sagen „Ändern des Werts einer Variablen durch manuelles Bearbeiten in einem Texteditor“?

Variablensubstitution hat nichts mit der Änderung des Wertes einer Variablen zu tun. Die Änderung des Wertes einer Variablen ist eineAbtretung.

Natürlich kann eine Zuweisung wie jeder andere Befehl auch Variablensubstitutionen enthalten. Variablensubstitutionen sind jedoch nicht speziell für Zuweisungen vorgesehen.

Außerdem kann man den Wert einer Variable nicht mit einem Editor ändern. Eine bereits deklarierte Variable hat in jedem Prozess einen Wert, sie ist keine Systemkonfiguration. Man kann Konfigurationsdateien haben, die denanfänglichWert einer Variablen, und Sie können einen Editor verwenden, um diesen Anfangswert in diesen Dateien zu ändern. Danach kann sich der Wert jedoch ändern.

verwandte Informationen