if: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) |
||
Zeile 37: | Zeile 37: | ||
# <b>if ls /etc/passwd; then wc -l /etc/passwd; fi</b> | # <b>if ls /etc/passwd; then wc -l /etc/passwd; fi</b> | ||
bzw. | |||
#!/bin/bash | |||
if [ -f "/etc/passwd" ]; then | |||
wc -l /etc/passwd | |||
fi</b> | |||
44 /etc/passwd | |||
Falls die Variable SHELL den Wert "/bin/bash" enthält, so wird ein bestimmter Text ausgegeben. | |||
#!/bin/ | #!/bin/bash | ||
if [ "$SHELL" = "/bin/bash" ]; then | if [ "${SHELL}" = "/bin/bash" ]; then | ||
echo " | echo "Deine Anmeldeshell ist die Bash (Bourne again shell)" | ||
else | else | ||
echo " | echo "Deine Anmeldeshell ist nicht die Bash, sondern ${SHELL}" | ||
fi | fi | ||
Falls Variable ZEICHEN den Wert "A" oder "B" enthält, so wird ein entsprechender Text ausgegeben. | |||
#!/bin/ | #!/bin/bash | ||
if [ "$ZEICHEN" = "A" ] || [ "$ZEICHEN" = "B" ]; then | if [ "${ZEICHEN}" = "A" ] || [ "${ZEICHEN}" = "B" ]; then | ||
echo "Das Zeichen $ZEICHEN ist ein A oder ein B" | echo "Das Zeichen ${ZEICHEN} ist ein A oder ein B" | ||
else | else | ||
echo "Das Zeichen $ZEICHEN ist kein A und kein B" | echo "Das Zeichen ${ZEICHEN} ist kein A und kein B" | ||
fi | fi | ||
- | Falls Datei "/etc/password" vorhanden ist, so wird ihr Inhalt mit cat ausgegeben - ansonsten wird das Skript mit exit beendet. | ||
#!/bin/ | #!/bin/bassh | ||
if | if [ -f "/etc/password" ]; then | ||
cat /etc/password | |||
else | else | ||
echo "/etc/password ist keine Datei" | echo "/etc/password ist keine Datei" | ||
exit | exit | ||
fi | |||
Falls Variable a grösser oder gleich 10 ist, so wird <b>nichts</b> (:) weiter gemacht. Falls sie aber kleiner oder gleich 5 ist, so wird "1" ausgegeben - ansonsten "2". | |||
#!/bin/bash | |||
if [ "$a" -ge 10 ]; then | |||
: | |||
elif [ "$a" -le 5 ]; then | |||
echo "1" | |||
else | |||
echo "2" | |||
fi | fi | ||
Version vom 26. Juli 2021, 07:34 Uhr
Der Shell-Befehl if ist eine Verzweigung zur Erzeugung einer bedingten Abfrage.
Syntax
Folgende allgemeine bedingte Verzweigung führt Befehlsfolge1 aus. Ist der Exit-Status des letzten Befehls von Befehlsfolge1 eine 0, dann wird der "then"-Teil ausgeführt. Andernfalls wertet die Shell eine allfällig folgende und mit "elif" eingeleitete Befehlsfolge2 aus. Der zugehörige "then"-Teil wird ebenfalls nur ausgewertet, falls Befehlsfolge2 den Exit-Status 0 liefert. Steht am Ende der Sequenz eine "else"-Anweisung, dann wird Befehlsliste3 ausgeführt, falls keine der zuvor durchgeführten Abfragen zutrifft.
Grundsyntax | Gleichwertige Verschachtelungen | |
---|---|---|
if Befehlsfolge1 then Befehlsliste1 [elif Befehlsfolge2 then Befehlsliste2] [else Befehlsliste3] fi |
if Befehlsfolge1 then Befehlsliste1 else if Befehlsfolge2 then Befehlsliste2 fi fi |
if Befehlsfolge1 then Befehlsliste1 elif Befehlsfolge2 then Befehlsliste2 fi "elif" benötigt kein abschliessendes "fi". |
Verwendung
Wenn die Datei "/etc/passwd" vorhanden ist, werden die Anzahl Zeilen in der Datei gezählt.
# if ls /etc/passwd; then wc -l /etc/passwd; fi bzw. #!/bin/bash if [ -f "/etc/passwd" ]; then wc -l /etc/passwd fi 44 /etc/passwd
Falls die Variable SHELL den Wert "/bin/bash" enthält, so wird ein bestimmter Text ausgegeben.
#!/bin/bash if [ "${SHELL}" = "/bin/bash" ]; then echo "Deine Anmeldeshell ist die Bash (Bourne again shell)" else echo "Deine Anmeldeshell ist nicht die Bash, sondern ${SHELL}" fi
Falls Variable ZEICHEN den Wert "A" oder "B" enthält, so wird ein entsprechender Text ausgegeben.
#!/bin/bash if [ "${ZEICHEN}" = "A" ] || [ "${ZEICHEN}" = "B" ]; then echo "Das Zeichen ${ZEICHEN} ist ein A oder ein B" else echo "Das Zeichen ${ZEICHEN} ist kein A und kein B" fi
Falls Datei "/etc/password" vorhanden ist, so wird ihr Inhalt mit cat ausgegeben - ansonsten wird das Skript mit exit beendet.
#!/bin/bassh if [ -f "/etc/password" ]; then cat /etc/password else echo "/etc/password ist keine Datei" exit fi
Falls Variable a grösser oder gleich 10 ist, so wird nichts (:) weiter gemacht. Falls sie aber kleiner oder gleich 5 ist, so wird "1" ausgegeben - ansonsten "2".
#!/bin/bash if [ "$a" -ge 10 ]; then : elif [ "$a" -le 5 ]; then echo "1" else echo "2" fi
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Bedingte Anweisung und Verzweigungwbm | Enzyklopädischer Artikel |