Einführung
In diesem Lab lernen Sie den Umgang mit Shell-Variablen unter Linux. Shell-Variablen sind essenziell für das Speichern und Verarbeiten von Daten in Shell-Skripten. Sie können verschiedene Arten von Werten wie Zahlen, Zeichen oder ganze Zeichenketten enthalten. Dieses Lab führt Sie durch das Erstellen, Referenzieren und Verwenden von Shell-Variablen und legt damit ein solides Fundament für Ihre Fähigkeiten im Bereich Shell-Scripting.
Shell-Variablen erstellen
Shell-Variablen werden erzeugt, indem man ihnen mit dem Gleichheitszeichen = einen Wert zuweist. Wir beginnen damit, ein einfaches Shell-Skript zu erstellen, das einige Variablen definiert.
Öffnen Sie ein Terminal in Ihrer WebIDE (VS Code).
Erstellen Sie eine neue Datei namens
variables.shim Verzeichnis/home/labex/project:touch /home/labex/project/variables.shÖffnen Sie die Datei
variables.shin der WebIDE und fügen Sie den folgenden Inhalt hinzu:#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' echo "Price per apple: $PRICE_PER_APPLE" echo "My first letters: $MyFirstLetters" echo "Greeting: $greeting"In diesem Skript haben wir drei Variablen erstellt:
PRICE_PER_APPLE: Eine Ganzzahl-Variable (Integer)MyFirstLetters: Eine Zeichenketten-Variable (String)greeting: Eine Zeichenketten-Variable mit mehreren Leerzeichen
Speichern Sie die Datei.
Machen Sie das Skript ausführbar:
chmod +x /home/labex/project/variables.shFühren Sie das Skript aus:
./variables.shSie sollten die folgende Ausgabe sehen:
Price per apple: 5 My first letters: ABC Greeting: Hello world!Beachten Sie, dass die zusätzlichen Leerzeichen in der Variable
greetingin der Ausgabe erhalten bleiben, da wir einfache Anführungszeichen bei der Definition verwendet haben, aber keine Anführungszeichen im Echo-Befehl (in diesem speziellen Fall der Zuweisung).
Referenzieren von Shell-Variablen
Beim Referenzieren von Shell-Variablen gibt es einige Szenarien, in denen eine spezielle Syntax erforderlich ist. Lassen Sie uns diese Fälle untersuchen.
Öffnen Sie die Datei
variables.shin der WebIDE.Ersetzen Sie den Inhalt der Datei durch Folgendes:
#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' ## Maskieren von Sonderzeichen echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE" ## Vermeidung von Mehrdeutigkeiten echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ" ## Erhalt von Leerzeichen echo $greeting echo "$greeting"Speichern Sie die Datei.
Führen Sie das Skript aus:
./variables.shSie sollten die folgende Ausgabe sehen:
The price of an Apple today is: $HK 5 The first 10 letters in the alphabet are: ABCDEFGHIJ Hello world! Hello world!Beachten Sie die Unterschiede:
- Das
$-Zeichen wird in der ersten Zeile mit einem Backslash maskiert (escaped), um es als normales Textzeichen auszugeben. - Geschweifte Klammern
{}werden in der zweiten Zeile verwendet, um den Variablennamen eindeutig vom nachfolgenden Text abzugrenzen. - Die letzten beiden Zeilen zeigen den Unterschied zwischen der Referenzierung einer Variable mit und ohne Anführungszeichen, wenn diese Leerzeichen enthält.
- Das
Befehlssubstitution
Die Befehlssubstitution ermöglicht es Ihnen, die Ausgabe eines Befehls als Wert einer Variable zu verwenden. Dies geschieht, indem der Befehl in $() oder Backticks (``) eingeschlossen wird.
Öffnen Sie die Datei
variables.shin der WebIDE.Fügen Sie den folgenden Inhalt am Ende der Datei hinzu:
## Command substitution CURRENT_DATE=$(date +"%Y-%m-%d") echo "Today's date is: $CURRENT_DATE" FILES_IN_DIR=$(ls) echo "Files in the current directory:" echo "$FILES_IN_DIR" UPTIME=$(uptime -p) echo "System uptime: $UPTIME"Speichern Sie die Datei.
Führen Sie das Skript aus:
./variables.shSie sollten eine Ausgabe ähnlich dieser sehen (die tatsächlichen Werte hängen von Ihrem System ab):
Today's date is: 2023-08-16 Files in the current directory: variables.sh System uptime: up 2 hours, 15 minutesIn diesem Beispiel:
$(date +"%Y-%m-%d")führt den Befehldateaus und speichert dessen Ausgabe.$(ls)führt den Befehllsaus und erfasst die Liste der Dateien.$(uptime -p)führt den Befehluptimemit der Option-paus, um die Systemlaufzeit zu ermitteln.
Arithmetische Operationen
Shell-Variablen können auch in arithmetischen Operationen verwendet werden. Die Bash bietet die Syntax $((Ausdruck)) für Berechnungen an.
Erstellen Sie eine neue Datei namens
arithmetic.shim Verzeichnis/home/labex/project:touch /home/labex/project/arithmetic.shÖffnen Sie die Datei
arithmetic.shin der WebIDE und fügen Sie den folgenden Inhalt hinzu:#!/bin/bash X=10 Y=5 ## Addition SUM=$((X + Y)) echo "Sum of $X and $Y is: $SUM" ## Subtraction DIFF=$((X - Y)) echo "Difference between $X and $Y is: $DIFF" ## Multiplication PRODUCT=$((X * Y)) echo "Product of $X and $Y is: $PRODUCT" ## Division QUOTIENT=$((X / Y)) echo "Quotient of $X divided by $Y is: $QUOTIENT" ## Modulus (remainder) REMAINDER=$((X % Y)) echo "Remainder of $X divided by $Y is: $REMAINDER" ## Increment X=$((X + 1)) echo "After incrementing, X is now: $X" ## Decrement Y=$((Y - 1)) echo "After decrementing, Y is now: $Y"Speichern Sie die Datei.
Machen Sie das Skript ausführbar:
chmod +x /home/labex/project/arithmetic.shFühren Sie das Skript aus:
./arithmetic.shSie sollten die folgende Ausgabe sehen:
Sum of 10 and 5 is: 15 Difference between 10 and 5 is: 5 Product of 10 and 5 is: 50 Quotient of 10 divided by 5 is: 2 Remainder of 10 divided by 5 is: 0 After incrementing, X is now: 11 After decrementing, Y is now: 4Dieses Skript demonstriert verschiedene mathematische Operationen unter Verwendung von Shell-Variablen.
Verwendung von Umgebungsvariablen
Umgebungsvariablen sind Variablen, die für alle Prozesse verfügbar sind, die in der aktuellen Shell-Sitzung ausgeführt werden. Wir schauen uns einige gängige Umgebungsvariablen an und lernen, wie wir eigene erstellen.
Erstellen Sie eine neue Datei namens
environment.shim Verzeichnis/home/labex/project:touch /home/labex/project/environment.shÖffnen Sie die Datei
environment.shin der WebIDE und fügen Sie den folgenden Inhalt hinzu:#!/bin/bash ## Displaying some common environment variables echo "Home directory: $HOME" echo "Current user: $LOGNAME" echo "Shell being used: $SHELL" echo "Current PATH: $PATH" ## Creating a new environment variable export MY_VARIABLE="Hello from my variable" ## Displaying the new variable echo "My new variable: $MY_VARIABLE" ## Creating a child process to demonstrate variable scope bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"' ## Removing the environment variable unset MY_VARIABLE ## Verifying the variable is unset echo "MY_VARIABLE after unsetting: $MY_VARIABLE"Speichern Sie die Datei.
Machen Sie das Skript ausführbar:
chmod +x /home/labex/project/environment.shFühren Sie das Skript aus:
./environment.shSie sollten eine Ausgabe ähnlich dieser sehen:
Home directory: /home/labex Current user: labex Shell being used: /bin/zsh Current PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin My new variable: Hello from my variable MY_VARIABLE in child process: Hello from my variable MY_VARIABLE after unsetting:Dieses Skript zeigt, wie man auf existierende Umgebungsvariablen zugreift, neue mit
exporterstellt und sie mitunsetwieder entfernt.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie man mit Shell-Variablen unter Linux arbeitet. Sie haben die Erstellung und Referenzierung von Variablen erkundet, die Befehlssubstitution genutzt, um Befehlsausgaben Variablen zuzuweisen, arithmetische Operationen durchgeführt und mit Umgebungsvariablen gearbeitet. Diese Fähigkeiten bilden eine entscheidende Grundlage für das Shell-Scripting und werden Ihnen bei der Arbeit mit Linux-Systemen von großem Nutzen sein.
Die wichtigsten Erkenntnisse aus diesem Lab sind:
- Erstellen und Referenzieren von Shell-Variablen.
- Verwendung spezieller Syntax für die Variablenreferenzierung in verschiedenen Szenarien.
- Nutzung der Befehlssubstitution zum Erfassen von Befehlsausgaben.
- Durchführung arithmetischer Operationen mit Shell-Variablen.
- Umgang mit Umgebungsvariablen und deren Sichtbarkeit.
Während Sie Ihren Weg in Linux und Shell-Scripting fortsetzen, denken Sie daran, dass Variablen mächtige Werkzeuge zum Speichern und Manipulieren von Daten sind. Üben Sie deren Einsatz in Ihren Skripten, um Ihren Code flexibler und wiederverwendbar zu gestalten.



