If-Anweisung
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy. Lektion 70 von 82.
Bisher führen deine Skripte jeden Befehl von oben nach unten aus, ohne Entscheidungen zu treffen. Aber was, wenn dein Skript abhängig von bestimmten Bedingungen unterschiedliche Dinge tun soll? Hier kommt die if-Anweisung ins Spiel.
Die if-Anweisung ermöglicht es deinem Skript, Entscheidungen zu treffen. Sie prüft, ob eine Bedingung wahr ist, und führt in diesem Fall einen Codeblock aus. Hier ist die grundlegende Struktur:
#!/bin/bash
age=18
if [ $age -ge 18 ]; then
echo "You are an adult"
fiDie Bedingung steht in eckigen Klammern, mit Leerzeichen darum. Das Schlüsselwort then kennzeichnet den Beginn des auszuführenden Codes, und fi (rückwärts geschrieben) beendet die Anweisung.
Du kannst auch den Fall behandeln, in dem die Bedingung falsch ist, indem du else verwendest:
#!/bin/bash
age=15
if [ $age -ge 18 ]; then
echo "You are an adult"
else
echo "You are a minor"
fiZu den üblichen Vergleichsoperatoren für Zahlen gehören -eq (gleich), -ne (nicht gleich), -gt (größer als), -lt (kleiner als), -ge (größer oder gleich) und -le (kleiner oder gleich). Für Zeichenfolgen verwenden Sie = für Gleichheit und != für Ungleichheit.
Denke daran, innerhalb der Klammern immer Leerzeichen einzufügen und deine Variablen in Anführungszeichen zu setzen, um Fehler bei leeren Werten zu vermeiden.
Aufgabe
EinfachErstelle ein Shell-Skript namens check_score.sh, das eine if-Anweisung verwendet, um eine Testpunktzahl auszuwerten.
Dein Skript sollte:
- Mit der Shebang-Zeile (
#!/bin/bash) beginnen - Eine Variable namens
scoremit dem Wert75erstellen - Eine if-Anweisung verwenden, um zu prüfen, ob die Punktzahl größer oder gleich 70 ist
- Wenn dies wahr ist, Folgendes ausgeben:
You passed! - Wenn dies falsch ist, Folgendes ausgeben:
You failed.
Mach das Skript ausführbar und führe es aus. Da die Punktzahl 75 beträgt, sollte deine Ausgabe folgendermaßen aussehen:
You passed!Hinweis: Denke daran,
-gefür den Vergleich „größer oder gleich“ zu verwenden, Leerzeichen innerhalb der eckigen Klammern einzufügen und deine if-Anweisung mitfizu beenden.Hier gibt es keinen Datei-Editor. Schreibe die Datei daher direkt aus der Shell mit einem Here-Dokument: Gib
cat > check_score.sh << 'EOF'ein, danach die Zeilen des Skripts und anschließend eine letzte Zeile, die nurEOFenthält.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei13Grundlagen der Shell-Skripte
Was ist ein Shell-SkriptEin Skript erstellen und ausführenVariablen in SkriptenBenutzereingabe in SkriptenIf-AnweisungFor-SchleifeWhile-SchleifeZusammenfassung - Zahlenraten2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-PipelineÜbe selbstständig: Terminal-Playground