Shell Scripting · 7 min read · Nov 14, 2025
Shell-Scripting Teil 2: Eingaben akzeptieren und Shell-Arithmetik durchführen
Hi! Dieser Artikel ist der zweite Teil der Howtoforge-Shell-Scripting-Tutorialreihe. Ich gehe davon aus, dass Sie den ersten Teil der Reihe gelesen haben und wissen, wie man ein einfaches Skript erstellt und ausführt. Im zweiten Teil lernen Sie, wie Sie Eingaben vom Benutzer akzeptieren und diese durch Shell-Scripting verarbeiten. Lassen Sie uns anfangen!
Variablen in Linux
Ähnlich wie Programmiersprachen hat die Linux-Shell die Fähigkeit, Daten in Variablen zu speichern. Eine Variable ist ein Container, der vorübergehend Daten speichert, die durch eine Programmiersprache verarbeitet werden. Es gibt zwei Arten von Variablen in Linux: die Umgebungsvariablen und die Shell-Variablen.
Umgebungsvariablen
Die Umgebungsvariablen sind die Standardvariablen in Linux und werden verwendet, um Informationen zwischen Prozessen in der Shell zu übergeben. Umgebungsvariablen sind groß- und kleinschreibungsempfindlich und sollten immer in Großbuchstaben geschrieben werden, um auf sie zuzugreifen.
Die folgende Tabelle zeigt die gängigen Umgebungsvariablen in der Linux-Shell:
| Variablenname | Verwendung |
| BASH | Enthält den vollständigen Pfad des Befehlsinterpreter für Bash-Skripte |
| BASH_VERSION | Enthält die Bash-Version des derzeit verwendeten Systems |
| HOME | Enthält den relativen Pfad des Home-Verzeichnisses. |
| LOGNAME | Enthält den Kontonamen des aktuell angemeldeten Benutzers |
| OSTYPE | Enthält eine Zeichenkette, die das aktuelle Betriebssystem des verwendeten Systems beschreibt |
| PATH | Enthält einen durch Doppelpunkte getrennten absoluten Pfad der ausführbaren Dateien in Linux |
| PWD | Enthält das aktuelle Arbeitsverzeichnis der Shell |
| SHELL | Enthält die bevorzugte Befehlszeilen-Shell |
| USER | Funktioniert ähnlich wie LOGNAME. Es enthält den Kontonamen des aktuell angemeldeten Benutzers |
| _ | Enthält den Namen des zuletzt verwendeten Befehls in der Shell |
Um den Wert einer Umgebungsvariable anzuzeigen, muss der Benutzer ein Dollarzeichen ($) vor die zuzugreifende Variable setzen. Zum Beispiel, um einige Systeminformationen wie das aktuelle Arbeitsverzeichnis, den angemeldeten Benutzer und den OS-Typ mit echo anzuzeigen, verwenden wir:
#!/bin/bash
echo $PWD
echo $LOGNAME
echo $OSTYPEDas Ergebnis ist:

Um die gesamte Liste der Umgebungsvariablen in Linux anzuzeigen, verwenden Sie den Befehl env.
Ändern von Werten von Umgebungsvariablen
Um Flexibilität im System zu bieten, können diese Umgebungsvariablen manipuliert werden. Um einen Wert einer Umgebungsvariable zuzuweisen, verwenden Sie einen Zuweisungsausdruck (Gleichheitszeichen).
Beispiel:
#!/bin/bash
echo $USER
USER="neuer Benutzer"
echo $USERDas Ergebnis des Skripts ist:

Wenn Sie das Skript ausführen, zeigt zunächst das $USER in der Zeile echo $USER den Wert der USER-Variable an. Durch die Verwendung eines Zuweisungsoperators (=) ändert die USER-Variable ihren Wert. Wenn der Benutzer jedoch unbekannte Werte einer Umgebungsvariable zuweist, erstellt die Shell eine andere Shell-Variable, die der Umgebungsvariable im lokalen Kontext des Skripts ähnelt, jedoch das Verhalten anderer Anwendungen nicht beeinflusst. Das bedeutet, dass die USER-Variable ihren Standardwert beibehält, sobald unser Skript geschlossen wird.
Beachten Sie, dass wir in unserem vorherigen Beispiel das Dollarzeichen ($) im Variablennamen weggelassen haben, als wir die Werte der Umgebungsvariablen manipuliert haben, wie in der Zeile USER=”neuer Benutzer”. Außerdem darf beim Verwenden des Zuweisungsoperators kein Leerzeichen zwischen USER und dem Gleichheitszeichen stehen. Ein Leerzeichen zwischen ihnen erzeugt einen Fehler.
Shell-Variablen
Die Shell erlaubt es dem Benutzer auch, Variablen zu deklarieren. Ähnlich wie in PHP muss der Benutzer sich beim Deklarieren einer Variable in Shell-Skripten keine Gedanken über den Datentyp machen; der Interpreter erkennt automatisch den Datentyp der Variable basierend auf den Daten, die der Benutzer zur Laufzeit speichert.
Regeln zur Benennung von Shell-Variablen
Wie in jeder Programmiersprache gibt es Regeln zur Benennung von Shell-Variablen. Folgendes fasst die Regeln zusammen:
- Die Namen von Variablen müssen mit einem Buchstaben oder einem Unterstrich beginnen.
- Sie dürfen nur alphanumerische Zeichen oder einen Unterstrich enthalten.
- Variablen sind groß- und kleinschreibungsempfindlich, daher sind die Variablen path, PATH und Path unterschiedlich.
Um diese Regel zu beweisen, erstellen wir ein einfaches Skript:
#!/bin/bash
12abc=10
abc#*=10
_abc=10
_ABC=2
echo $12abc $abc#* $_abc $_ABCDie Zeilen 2 und 3 geben einen “Befehl nicht gefunden”-Fehler zurück, da die Variable 12abc mit einem numerischen Zeichen beginnt und die Variable abc#* illegale Zeichen enthält. Wir haben auch bewiesen, dass _abc und _ABC unterschiedliche Variablen sind und dass die Zeile _ABC=2 den Wert von _abc nicht überschreibt.

Zuweisen von Werten zu Shell-Variablen mit dem Befehl read:
read ist ein Befehl, der es ermöglicht, Eingaben vom Benutzer zu akzeptieren. Die Syntax zur Verwendung des Befehls read ist:
read Zum Beispiel erstellen wir ein Skript, das es einem Benutzer ermöglicht, seinen Vor- und Nachnamen einzugeben und diese anzuzeigen. Um dem Benutzer zu zeigen, was zu tun ist, zeigen wir eine Benutzeraufforderung mit dem echo-Befehl an.
#!/bin/bash
echo "Ihr Vorname: "
read fname
echo "Ihr Nachname:"
read lname
echo "Hallo $fname $lname ! Ich lerne, wie man Shell-Skripte erstellt."Das Ergebnis ist:

Bitte beachten Sie, dass wir wie in unserem vorherigen Beispiel keine Variable deklarieren müssen, um sie zu verwenden. Der Interpreter erstellt auch automatisch die Variable, die im Befehl read verwendet wird. In dem Beispiel haben wir jedoch wiederholt den echo-Befehl verwendet, um eine Aufforderung an den Benutzer zu erstellen. Der read-Befehl hat auch die Fähigkeit, eine Aufforderung zu erstellen, während er Benutzereingaben akzeptiert. Die Syntax zur Verwendung einer Aufforderung im read-Befehl ist:
read -p "Ihre Aufforderung: " Um unseren vorherigen Code zu vereinfachen, können wir den Code umstrukturieren:
#!/bin/bash
read -p "Ihr Vorname: " fname
read -p "Ihr Nachname: " lname
echo "Hallo $fname $lname ! Ich lerne, wie man Shell-Skripte erstellt."Ein weiterer Vorteil des read-Befehls ist, dass die Eingabeaufforderung direkt nach dem Text und nicht in der nächsten Zeile erscheint.

Der read-Befehl kann auch verwendet werden, um Passwörter zu akzeptieren. Im Gegensatz zu normalen Eingaben werden Passwörter maskiert, um Sicherheit zu bieten. Die Syntax zur Annahme eines Passworts ist:
read -s -p "Ihre Aufforderung" Durchführung einfacher Arithmetik mit der Shell
Neben der Annahme von Eingaben und der Anzeige von Ausgaben hat die Bash-Shell auch eine integrierte Arithmetikoption. Die folgende Tabelle fasst die integrierten arithmetischen Operatoren der Bash-Shell zusammen.
| Operator | Beschreibung | Syntax | Verwendung |
| + | Addition | a=$((b+c)) | Addiert den Wert von b und c und speichert ihn in der Variable a |
| - | Subtraktion | a=$((b-c)) | Subtrahiert den Wert von c von b und speichert ihn in der Variable a |
| * | Multiplikation | a=$((b*c)) | Multipliziert den Wert von b und c und speichert ihn in der Variable a |
| / | Division | a=$((b/c)) | Teilt den Wert von b durch c und speichert ihn in der Variable a |
| % | Modulus | a=$((b%c)) | Führt eine Modulo-Division von b und c durch und speichert sie in der Variable a |
| ++ | Vor-Inkrement | $((++aa)) | Erhöht den Wert der Variable a sofort |
| ++ | Nach-Inkrement | $((a++)) | Erhöht den Wert der Variable a und spiegelt die Änderungen in der nächsten Zeile wider |
| – | Vor-Dekrement | $((–a)) | Verringert den Wert der Variable a sofort |
| – | Nach-Dekrement | $((a–)) | Verringert den Wert der Variable a und spiegelt die Änderungen in der nächsten Zeile wider |
| Exponentiation | $((a2)) | Erhöht den Wert von a auf die Potenz von 2 | |
| += | Plus gleich | $((a+=b)) | Addiert den Wert von a und b und speichert ihn in der Variable a |
| -= | Minus gleich | $((a-=b)) | Subtrahiert den Wert von b von a und speichert ihn in der Variable a |
| *= | Mal gleich | $((a*=b)) | Multipliziert den Wert von a und b und speichert ihn in der Variable a |
| /= | Slash gleich | $((a/=b)) | Teilt den Wert von a durch b und speichert ihn in der Variable a |
| %= | Mod-gleich | $((a%=b)) | Führt eine Modulo-Division zwischen a und b durch und speichert sie in der Variable a |
Beachten Sie, dass jedes Mal, wenn Sie eine arithmetische Anweisung ausführen, alle unsere Variablen mit einem Dollarzeichen und doppelten Klammern umschlossen sind. Dadurch behandelt der Interpreter die Werte unserer Variablen als Ganzzahlen. Ohne dies behandelt der Interpreter die Werte der Variablen als Zeichenfolgen. Um ein Beispiel zu sehen, siehe das folgende Skript:
#!/bin/bash
read -p "Geben Sie int1 ein: " a
read -p "Geben Sie int2 ein: " b
echo $((a+b))
c=$a+$b
echo $cWenn wir unser Beispiel ausführen, addiert die Zeile $((a+b)) die Werte des Benutzers, die in den Variablen a und b gespeichert sind, während c=$a+$b die Variablen a und b als Zeichenfolgen behandelt.

Fazit
Wir haben behandelt, wie man Eingaben akzeptiert und sie in einer Variablen speichert und wie man arithmetische Operationen in Bash-Shell-Skripten durchführt. Im nächsten Teil werden wir Kontrollstrukturen und insbesondere die Entscheidungsstruktur behandeln.
Referenzen:
Das Linux Information Project. (2007). Abgerufen am 29. April 2015 von Linfo.org: http://www.linfo.org/
Cooper, M. (n.d.). Advanced Bash Scripting Guide. Abgerufen am 29. April 2015 von http://www.tldp.org/LDP/abs/html/
Umgebungsvariablen. (n.d.). Abgerufen am 29. April 2015 von Ubuntu-Dokumentation: https://help.ubuntu.com/community/EnvironmentVariables
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.