Website-Suche

Ein Einblick in Linux-„Variablen“ in der Shell-Skriptsprache – Teil 9


Wir haben bereits eine Reihe von Artikeln über Linux Shell Scripting geschrieben, die damals großen Anklang fanden und auch heute noch sehr relevant sind. Hier ist der Link zur Sammlung von Artikeln zum Thema Shell-Scripting.

  1. Lernen Sie Linux-Shell-Scripting

Hier in diesem Artikel werden wir die Variablen, ihre Ausführung und ihre Implementierung im Shell-Skript sehen.

Eine Ausgabe speichern

Die Ausgabe eines Befehls kann in die Standardausgabe oder eine Datei umgeleitet und auch in einer Variablen gespeichert werden. Wenn die Ausgabe eines Befehls so groß ist, dass sie nicht auf den Bildschirm passt, bleibt uns nur die Möglichkeit, die Ausgabe in einer Datei oder in einer Variablen zu speichern. Ein Vorteil der Speicherung der Ausgabe in Variablen ist die schnellere Untersuchungsgeschwindigkeit. Variablen werden im Speicher gespeichert und sind daher im Vergleich zum Abrufen aus einer Datei tendenziell schneller.

Variablen in der Skriptsprache

Variablen sind eine wichtige Komponente beim Shell-Scripting und werden mit dem Bash-Befehl „Declare“ deklariert. Um eine Variable wie „level“ zu deklarieren, müssen wir den folgenden Befehl ausführen.

declare LEVEL

Hinweis: Wir müssen „typecast“ verwenden, eine integrierte Anweisung für die Korn-Shell-Kompatibilität. „Declare“ ist komplexer und enthält alle Funktionen und wird daher bei der Verwendung von BASH empfohlen.

Regeln
  1. Ein Variablenname muss die Verwendung der Variablen im Skript rechtfertigen.
  2. Es wird dringend empfohlen, im gesamten Programm denselben Variablennamen zu verwenden.
  3. Variablennamen können sowohl in Groß- als auch in Kleinbuchstaben geschrieben werden, aber Shell-Befehle werden vereinbarungsgemäß in Kleinbuchstaben geschrieben und daher sollten wir Variablennamen in Großbuchstaben verwenden, um Verwirrung zu vermeiden. z. B. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT usw.

Implementierung

Über ein Gleichheitszeichen (=) kann einer Variablen ein Wert zugewiesen werden. Um einer Variablen eine leere Zeichenfolge zuzuweisen, dürfen wir nach dem Gleichheitszeichen keinen Wert angeben.

LEVEL =

Überprüfen Sie den in der Variablen „LEVEL“ gespeicherten Wert als.

printf "%i" $LEVEL

printf, der Befehl, den die meisten „C“-Programmierer kennen, druckt Daten. %i – Stellt eine ganze Zahl dar. Wir können es je nach Bedarf durch %c für Zeichen oder %c für Zeichenfolge ersetzen.

$LEVEL: Beachten Sie das „$“, das als Wertersatz für die Variable „LEVEL“ fungiert.

Beispielausgabe
printf "%i" $LEVEL
0

Weisen Sie der Variablen einen Wert zu.

LEVEL=0

Überprüfen Sie die gespeicherten Daten in der Variablen.

printf "%i" $LEVEL
0

HINWEIS: Es ist interessant festzustellen, dass in beiden Fällen, wenn wir der Variablen keinen Wert zugewiesen haben, und wenn wir den Wert „0<“ zugewiesen haben' an die Variable 'LEVEL' gibt 0 aus. Obwohl die Ausgabe in beiden Fällen gleich ist, behandelt das Shell-Skript beide Variablendeklarationen unterschiedlich.

Weisen Sie der Variablen einen neuen Wert zu.

LEVEL=121

Überprüfen Sie die gespeicherten Daten in der Variablen.

printf "%i" $LEVEL
121

Deaktivieren Sie eine Variable

Declare ist ein BASH-Befehl und erstellt nur bei Ausführung eine Variable. Die so erstellte Variable bleibt im Speicher, bis das Skript stoppt oder die Variable zerstört wird.

unset LEVEL

Vordefinierte Variablen in BASH

BASH hat über 50 Variablen vordefiniert. Einige dieser Variablen haben für BASH eine besondere Bedeutung, z. B. gibt eine Variable RANDOM eine Zufallszahl aus. Wenn sie nicht gesetzt und dann erneut definiert wird, geht der ursprüngliche Variablenwert für immer verloren. Daher wird empfohlen, keine vom System definierten Variablen zu verwenden.

Hier ist eine Liste einiger nützlicher BASH-Variablen.

  1. BASH – Der vollständige Pfadname von Bash.
  2. BASH_ENV – In einem Shell-Skript der Name der Profildatei, die vor dem Start des Skripts ausgeführt wurde.
  3. BASH_VERSION – Die Version von Bash (z. B. 2.04.0(1)-release).
  4. SPALTEN – Die Anzahl der Zeichen pro Zeile auf Ihrer Anzeige (z. B. 80).
  5. HOSTNAME – Der Name des Computers. Unter einigen Linux-Versionen kann dies der Maschinenname sein. Bei anderen kann es sich um einen vollständig qualifizierten Domänennamen handeln.
  6. HOSTTYPE – Computertyp.
  7. HOME – Der Name Ihres Home-Verzeichnisses.
  8. OSTYPE – Der Name des Betriebssystems.
  9. PATH – Durch Doppelpunkte getrennte Liste von Suchpfaden, um einen auszuführenden Befehl zu finden.
  10. PPID – Die Prozess-ID des übergeordneten Prozesses der Shell.
  11. PROMPT_COMMAND – Befehl, der vor der Einstellung der primären PS1-Eingabeaufforderungszeichenfolge ausgeführt werden soll.
  12. PWD – Das aktuelle Arbeitsverzeichnis (wie durch den Befehl cd festgelegt).
  13. RANDOM – Gibt bei jedem Verweis eine Zufallszahl zwischen 0 und 32767 zurück.
  14. SHELL – Die bevorzugt zu verwendende Shell; für Programme, die eine Shell für Sie starten.
  15. TERM – Der Terminalemulationstyp (z. B. Konsole).

Die Regel der Wortaufteilung.

LEVEL=0
printf "%i" $LEVEL
0

AND

LEVEL=”0”
printf "%i" $LEVEL
0

In beiden Fällen bleibt die Ausgabe gleich. Was ist also der Unterschied im Ergebnis bei der Verwendung von Zitaten?

Überprüfen wir dasselbe mit verschiedenen variablen Daten.

LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
printf "%i" $LEVEL
0

Ganz zu schweigen davon, dass die Ausgabe nicht korrekt ist. BASH verwendet das Leerzeichen nach „0“ als Abschluss und daher wird der Wert der Variablen auf „0“ gesetzt. Jetzt versuchen wir, Anführungszeichen für Variablen wie unten zu verwenden.

LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL 
0;1;2;3;4;5

Dennoch ist das Ergebnis nicht korrekt. BASH nahm die Variablenwerte und entfernte alle Leerzeichen dazwischen. Daher hat printf 0,1,2,3,4,5 nicht als unterschiedliche Werte interpretiert. Was ist also die Lösung?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Ja! Die Lösung besteht darin, die Variablenersetzung in Anführungszeichen zu setzen. Anführungszeichen gruppieren Zeichen in der Shell und interpretieren die Sonderzeichen sinnvoll.

Zitate können hintereinander verwendet werden und es ist eine gute Idee, Variablenersetzungen in Anführungszeichen zu setzen. Darüber hinaus kann es verwendet werden, um Gesamttexte von Zitaten zu trennen. Hier ist ein Beispiel.

LEVEL=5 
FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Das Trennen zitierter Textabschnitte durch Leerzeichen führt zu demselben Problem wie oben beschrieben. Die Bash behandelt Leerzeichen als Abschluss. Eine andere Möglichkeit der Variablensubstitution ist.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Einfache Anführungszeichen verhindern, dass BASH Sonderzeichen druckt.

printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

Der Backslash (/)

Backslash funktioniert wie ein einfaches Anführungszeichen für ein Zeichen. Haben Sie darüber nachgedacht, wie Sie () drucken sollen?

printf "%c" "\""

Wenn %q mit printf gruppiert ist, wird nach jedem Wort ein Backslash hinzugefügt, um den Wortabstand sicherzustellen.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Das ist alles für den Moment. Wir versuchen immer, unseren Lesern hin und wieder Artikel zur Verfügung zu stellen, die für sie nützlich sind. Der oben behandelte Artikel ist umfangreich, daher werden die restlichen Themen mit Beispielen im nächsten Artikel behandelt, der „Attribute von Variablen“, „Variablenexport“ usw. umfasst.

Bis dahin bleiben Sie auf dem Laufenden und verbunden mit linux-console.net. Vergessen Sie nicht, uns im Kommentarbereich unten Ihr wertvolles Feedback mitzuteilen.