Bash Shell Scripting Tutorial | Shell Scripting Tutorial | Learn Shell Programming
Inhaltsverzeichnis:
ifAnweisungif..elseAussageif..elif..elseAussage- Verschachtelte
ifAnweisungen - Mehrere Bedingungen
- Testoperatoren
- Fazit
Entscheidungsfindung ist eines der grundlegendsten Konzepte der Computerprogrammierung. Wie in jeder anderen Programmiersprache können
if
,
if..else
,
if..elif..else
und verschachtelte
if
Anweisungen in Bash verwendet werden, um Code basierend auf einer bestimmten Bedingung auszuführen.
In diesem Tutorial werden wir Sie durch die Grundlagen der Bash
if
Anweisungen führen und Ihnen zeigen, wie Sie sie in Ihren Shell-Skripten verwenden.
if
Anweisung
Bash,
if
Bedingungen unterschiedliche Formen haben können. Die grundlegendste
if
Anweisung hat die folgende Form:
if TEST-COMMAND then STATEMENTS fi
Die
if
Anweisung beginnt mit dem Schlüsselwort
if
gefolgt vom bedingten Ausdruck und dem Schlüsselwort
then
. Die Anweisung endet mit dem Schlüsselwort
fi
.
Wenn der
TEST-COMMAND
True
TEST-COMMAND
, werden die
STATEMENTS
ausgeführt. Wenn
TEST-COMMAND
False
zurückgibt, passiert nichts, die
STATEMENTS
ignoriert.
Im Allgemeinen empfiehlt es sich, den Code immer einzurücken und die Codeblöcke durch Leerzeilen zu trennen. Die meisten Benutzer verwenden Einrückungen mit 4 oder 2 Leerzeichen. Einrückungen und Leerzeilen verbessern die Lesbarkeit und Organisation Ihres Codes.
Schauen wir uns das folgende Beispielskript an, das prüft, ob eine bestimmte Zahl größer als 10 ist.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Speichern Sie den Code in einer Datei und führen Sie ihn über die Befehlszeile aus:
bash test.sh
Das Skript fordert Sie auf, eine Nummer einzugeben. Wenn Sie beispielsweise 15 eingeben, wird der Testbefehl mit
true
ausgewertet, da 15 größer als 10 ist, und der
echo
Befehl in der
then
Klausel wird ausgeführt.
The variable is greater than 10.
if..else
Aussage
Die Anweisung Bash
if..else
hat die folgende Form:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Wenn der
TEST-COMMAND
True
TEST-COMMAND
, werden die
STATEMENTS1
ausgeführt. Andernfalls werden die
STATEMENTS2
ausgeführt, wenn
TEST-COMMAND
False
zurückgibt. Sie können nur eine
else
Klausel in der Anweisung haben.
Fügen wir dem vorherigen Beispielskript eine
else
Klausel hinzu:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi
if..elif..else
Aussage
Die Anweisung Bash
if..elif..else
hat die folgende Form:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Wenn der
TEST-COMMAND1
True
TEST-COMMAND1
, wird
STATEMENTS1
ausgeführt. Wenn der
TEST-COMMAND2
True
TEST-COMMAND2
, werden die
STATEMENTS2
ausgeführt. Wenn keiner der
STATEMENTS2
True
ergibt, wird
STATEMENTS2
ausgeführt.
Sie können eine oder mehrere
elif
Klauseln in der Anweisung haben. Die
else
Klausel ist optional.
Die Bedingungen werden nacheinander ausgewertet. Sobald eine Bedingung
True
zurückgibt, werden die verbleibenden Bedingungen nicht ausgeführt und die Programmsteuerung wird an das Ende der
if
Anweisungen verschoben.
elif
wir dem vorherigen Skript eine
elif
Klausel hinzu:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi
Verschachtelte
if
Anweisungen
Mit Bash können Sie
if
Anweisungen in
if
Anweisungen verschachteln. Sie können mehrere
if
Anweisungen in eine andere
if
Anweisung einfügen.
Das folgende Skript fordert Sie auf, drei Zahlen einzugeben, und gibt die größte Zahl unter den drei Zahlen aus.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi
So sieht die Ausgabe aus:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
Anstatt verschachtelte
if
Anweisungen zu verwenden, ist es normalerweise effizienter, die case-Anweisung zu verwenden.
Mehrere Bedingungen
Mit den logischen Operatoren
OR
und
AND
können Sie in den
if
Anweisungen mehrere Bedingungen verwenden.
Hier ist eine andere Version des Skripts, um die größte Zahl unter den drei Zahlen zu drucken. In dieser Version verwenden wir anstelle der verschachtelten
if
Anweisungen den logischen
AND
Operator (
&&
).
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi
Testoperatoren
In Bash hat der
test
eine der folgenden Syntaxformen:
test EXPRESSION]
Verwenden Sie den logischen Operator
NOT
(
!
), Um den Testausdruck zu negieren. Verwenden Sie beim Vergleichen von Zeichenfolgen immer einfache oder doppelte Anführungszeichen, um Worttrennungs- oder Globenprobleme zu vermeiden.
Im Folgenden sind einige der am häufigsten verwendeten Operatoren aufgeführt:
-
-nVAR- True, wenn die Länge von VAR größer als Null ist.-zVAR- True, wenn die VAR leer ist.STRING1 = STRING2- True [STRING1 und STRING2 sind gleich.STRING1 != STRING2- True STRING1 und STRING2 sind nicht gleich.INTEGER1 -eq INTEGER2- True INTEGER1 und INTEGER2 sind gleich.INTEGER1 -gt INTEGER2- True INTEGER1 ist größer als INTEGER2.INTEGER1 -lt INTEGER2- True INTEGER1 ist kleiner als INTEGER2.INTEGER1 -ge INTEGER2- True INTEGER1 ist gleich oder größer als INTEGER2.INTEGER1 -le INTEGER2- True INTEGER1 ist gleich oder kleiner als INTEGER2.-hFILE- True, wenn die DATEI existiert und eine symbolische Verknüpfung ist.-rFILE- True, wenn die DATEI existiert und lesbar ist.-wFILE- True, wenn die DATEI existiert und beschreibbar ist.-xFILE- True, wenn die DATEI existiert und ausführbar ist.-dFILE- True, wenn die DATEI existiert und ein Verzeichnis ist.-eFILE- True, wenn die DATEI existiert und eine Datei ist, unabhängig vom Typ (Knoten, Verzeichnis, Socket usw.).-fFILE- True, wenn die DATEI existiert und eine reguläre Datei ist (kein Verzeichnis oder Gerät).
Fazit
Mit den Anweisungen
if
,
if..else
und
if..elif..else
können Sie den Ablauf der Ausführung des Bash-Skripts steuern, indem Sie bestimmte Bedingungen auswerten.
Microsoft Research Asia veranstaltet Gates zum 10-Jahres-Bash
Microsoft Research Asia ist von einem Dutzend Personen 1998 auf über 350 ein Jahrzehnt später gewachsen.
Ausführen von Bash unter Ubuntu unter Windows 10
Wenn Sie Windows Subsystem für Linux aktivieren, können Sie Bash unter Ubuntu in Bash-Skripten von Windows 10 ausführen , Linux-Kommandozeilen-Tools, Linux-First-Tools.
Bash-Arrays
Arrays sind eine der am häufigsten verwendeten und grundlegendsten Datenstrukturen. In diesem Artikel werden die Bash-Arrays behandelt und erläutert, wie Sie sie in Ihren Bash-Skripten verwenden.







