GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-If-Else-Anweisungen – Alles, was Sie wissen müssen

Dieser Artikel behandelt die Grundlagen der Bash-Shell-Skripterstellung und beschreibt die am häufigsten verwendeten logischen Konstrukte, einschließlich einzelner if Anweisung if-else Anweisung und elif Erklärung. Darüber hinaus behandeln wir die richtige Art und Weise, Zeichenfolgen und Zahlen zu vergleichen. Verbessern Sie Ihr Linux-Shell-Erlebnis in 5 Minuten!

Wann immer Sie ein erfahrener Systemadministrator oder Linux-Anfänger sind, lohnt es sich, die Grundlagen des Shell-Skriptings zu kennen. Diese Fähigkeit gibt Ihnen die Möglichkeit, wiederholbare Aufgaben auf einem einzelnen oder auf mehreren Servern zu automatisieren. Normalerweise umfassen diese Aufgaben die Installation von Software und die Konfiguration von Systemdiensten.

If-Anweisung

wenn -Anweisung dient als grundlegender Kern für alle Programmiersprachen. Diese Anweisung hilft bei der Implementierung der Entscheidungsfindungslogik in Ihrem Programm oder einem Skript. Deshalb ist es wichtig zu verstehen, wie man verschiedene if verwendet Aussagen.

Hier ist die grundlegende Syntax:

if [ condition ]
then
  COMMANDS
fi

Wo:

  • Bedingung – ist der logische Operator des if Aussage.
  • BEFEHLE – Befehle, die ausgeführt werden, wenn die Bedingung wahr ist .
  • wenn, dann, fi – sind Syntaxschlüsselwörter.

Hier ist eine Liste der am häufigsten verwendeten Testbedingungsoperatoren:

Operator Beschreibung
! AUSDRUCK Der AUSDRUCK ist falsch.
-n STRING Die Länge von STRING ist größer als null.Text
-z STRING Die Länge von STRING ist Null (der STRING ist leer)
STRING1 =STRING2 STRING1 ist gleich STRING2
STRING1 !=STRING2 STRING1 ist nicht gleich STRING2
INTEGER1 -eq INTEGER2 INTEGER1 ist numerisch gleich INTEGER2
GANZZAHL1 -gt GANZZAHL2 INTEGER1 ist numerisch größer als INTEGER2
INTEGER1 -lt INTEGER2 INTEGER1 ist numerisch kleiner als INTEGER2
-e DATEI DATEI existiert
-d DATEI DATEI existiert und es ist ein Verzeichnis
-s DATEI DATEI existiert und ist größer als Null (DATEI ist nicht leer.
-w DATEI DATEI existiert und die Schreibberechtigung ist erteilt.
-x DATEI DATEI existiert und die Ausführungserlaubnis ist erteilt.
-r DATEI DATEI existiert und die Leseberechtigung ist erteilt.

Das Interessanteste ist, dass während der Bash-Skriptausführung alles in [ ] wird zum Test bestanden Dienstprogramm, das entweder true zurückgibt oder falsch . Wenn Sie also die Syntax des Operators vergessen haben, verwenden Sie einfach seine Manpage:

man test

Sehen wir uns das einfachste wenn an Anweisungsbeispiel:

#!/bin/bash
var=2
if [ $var -eq 2 ]
then
  echo "var equals 2"
fi

Erwartete Ausgabe:

var equals 2

Im obigen Beispiel setzen wir die Variable var Wert auf 2 , dann haben wir getestet, ob die var Wert ist gleich (-eq2 und druckte die Nachricht.

Im wirklichen Leben verwenden wir normalerweise if Anweisungen in Kombination mit Bash-Schleifenkonstrukten (For-Schleifen, While-Schleifen, Until-Schleifen). Hier ist ein Beispiel für die Verwendung von if Anweisung mit für -Schleife:

#!/bin/bash
for var in 1 2 3 4 5
do
  if [ $var -eq 3 ]
  then
    echo "Value 3 found"
    break
  fi
  echo var=$var
done

Erwartete Ausgabe:

var=1
var=2
Value 3 found

In diesem Beispiel gehen wir die Liste der Nummern ab 1 durch bis 5 in für -loop und druckt den Wert der Variablen, die wir gerade verarbeitet haben. Wenn der Wert 3 gefunden wird, unterbrechen wir die Skriptausführung.

Zusätzlich zu den obigen Beispielen können Sie das Ergebnis einer mathematischen Berechnung im wenn verwenden Aussage:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  fi
done

Im obigen Beispiel prüfen wir gerade Zahlen im Bereich zwischen 1 und 10 .

Erwartete Ausgabe:

2 is even number
4 is even number
6 is even number
8 is even number
10 is even number

Jetzt können Sie die Ausgabe oder das Ausführungsergebnis eines Bash-Befehls überprüfen. Versuchen wir zu überprüfen, ob der Benutzer in /etc/passwd existiert Datei.

#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
  echo "$user user found"
fi

Im obigen Beispiel verwenden wir grep Befehl zum Durchsuchen von /etc/passwd Datei:

grep -ic "^$user" /etc/passwd

Wo:

  • -ich – Suche ohne Berücksichtigung der Groß-/Kleinschreibung.
  • -c – gibt die Anzahl der gefundenen Zeilen zurück (0 – nichts gefunden; 1 oder mehr, wenn etwas gefunden wurde).
  • “^$Benutzer” – Suchen Sie die Zeichenfolge, die beginnt (^ ) vom Wert von $user variabel.

Alles andere innerhalb des Beispiels sollte klar sein.

Erwartete Ausgabe:

root user found

Als Nächstes prüfen wir das /etc/passwd Datei existiert:

#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
  echo "$file file found"
fi

Erwartete Ausgabe:

/etc/passwd file found

If-else-Anweisung

Nachdem Sie sich mit dem grundlegenden if vertraut gemacht haben Anweisung sehen wir uns an, wie Bash if-else verwendet wird Aussage.

Hier ist die allgemeine Syntax:

if [ condition ]
then
  TRUE_COMMANDS
else
  FALSE_COMMANDS
fi

Wo:

  • Bedingung – ist der logische Operator des if Erklärung.
  • TRUE_COMMANDS – Befehle, die ausgeführt werden, wenn die Bedingung wahr ist.
  • FALSE_COMMANDS – Befehle, die ausgeführt werden, wenn die Bedingung falsch ist.
  • wenn, dann, sonst, fi – sind Syntaxschlüsselwörter.

Um zu demonstrieren, wie es funktioniert, ändern wir ein Beispiel, bei dem wir gerade Zahlen erkannt haben. Lassen Sie uns nun drucken, welche Zahl gerade und welche ungerade ist:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  else
    echo "$var is odd number"
  fi
done

Hier ist eine erwartete Ausgabe:

1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number

Elif-Anweisung

Was ist nun, wenn wir während unserer Skriptausführung mehrere verschiedene Bedingungen überprüfen müssen? Das ist auch mit der elif-Anweisung möglich, die eine Abkürzung von „else if“ ist “.

So sieht die Syntax aus:

if [ condition_1 ]
then
  CONDITION_1_COMMANDS
elif [ condition_2 ]
then
  CONDITION_2_COMMANDS
else
  ALL_OTHER_COMMANDS
fi

Wo:

  • Bedingung_1 – ist die logische Bedingung zum Ausführen von CONDITION_1_COMMANDS .
  • CONDITION_1_COMMANDS – Befehle, die ausgeführt werden, wenn die Bedingung_1 ist wahr .
  • CONDITION_2_COMMANDS – Befehle, die ausgeführt werden, wenn die Bedingung_2 ist wahr .
  • ALL_OTHER_COMMANDS – Befehle, die ausgeführt werden, wenn condition_1 und Bedingung_2 sind falsch .
  • wenn, dann, elif, sonst, fi – sind Syntaxschlüsselwörter.

Sehen wir uns das folgende Beispiel an:

#/bin/bash

time=8
if [ $time -lt 10 ]
then
  echo "Good morning"
elif [ $time -lt 20 ]
then
  echo "Good day"
else
  echo "Good evening"
fi

In diesem Beispiel richten wir eine Zeit ein Variable auf 8 AM und druckte eine Nachricht basierend auf dem Zeitwert.

Erwartete Ausgabe:

Good morning

Verschachtelung von if-Anweisungen

Wenn wir uns nun mit den Grundlagen vertraut gemacht haben, können wir dieses Thema abschließen, indem wir lernen, wie man if-Anweisungen verschachtelt.

Hier ist ein Beispiel:

#/bin/bash

value=5
if [ $value -lt 10 ]
then
  if [ $value -eq 5 ]
  then
    echo "Value equals 5"
  else
    echo "Value not equals 5"
  fi
else
  echo "value is greater than 10"
fi

Hier ist eine erwartete Ausgabe:

Value equals 5

Boolesche Operatoren

Es kann nützlich sein, mehrere Bedingungen in einem einzigen if zu prüfen Erklärung. Sie können dies tun, indem Sie die folgenden booleschen Operatoren verwenden:

  • && – logisches UND.
  • || – logisches ODER.

Hier ist ein kurzes Beispiel:

#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
  echo "Happy birthday\!"
fi

In diesem einfachen Beispiel prüfen wir, ob zwei Bedingungen wahr sind:

  • Der Benutzername des angemeldeten Benutzers sollte andrei sein.
  • Das heutige Datum sollte der 16. Dezember sein.

Wenn beide Bedingungen zutreffen, drucken wir „Happy Birthday!“

Case-Statement

In einigen Situationen benötigen Sie möglicherweise mehr als 3 elif-Anweisungen, um Ihr Skript einzuchecken. In diesem Fall wird die Verwendung einer elif-Anweisung kompliziert. Bash bietet Ihnen eine bessere Möglichkeit, mit solchen Situationen umzugehen, indem Sie einen Case verwenden Aussage.

Hier ist die Syntax:

case VARIABLE in
  VALUE_1)
    COMMANDS_FOR_VALUE_1
    ;;
  VALUE_2)
    COMMANDS_FOR_VALUE_2
    ;;
  *)
    DEFAULT_COMMANDS
    ;;
esac

Wo:

  • VARIABLE – die Variable, deren Wert mit VALUE_1 verglichen wird oder VALUE_2 .
  • COMMANDS_FOR_VALUE_1 – Befehle, die ausgeführt werden, wenn VARIABLE Wert ist gleich VALUE_1 .
  • COMMANDS_FOR_VALUE_2 – Befehle, die ausgeführt werden, wenn VARIABLE Wert ist gleich VALUE_2 .
  • DEFAULT_COMMANDS – Befehle, die ausgeführt werden, wenn VARIABLE Wert war nicht gleich einer der oberen Bedingungen.
  • Fallinesac – Syntaxschlüsselwörter.

Hier ist das sehr verbreitete Muster, um Eingaben für das Skript zu verarbeiten und den Dienst basierend auf dem Benutzer zu starten, zu stoppen oder neu zu starten Eingabe:

#!/bin/bash

case $1 in
  start)
    echo "Starting the service"
    ;;
  stop)
    echo "Stopping the service"
    ;;
  restart)
    echo "Restarting the service"
    ;;
  *)
    echo "Unknown action"
    ;;
esac

In diesem Beispiel prüfen wir den Wert des Sonderzeichens $1 Bash-Variable. Es enthält das erste Argument, das einem Skript bereitgestellt wird. Wenn Sie beispielsweise das obige Beispiel in einer Datei service.sh speichern und führe es so aus:

bash service.sh start

1 $ enthält das Wort „start“ als Wert.

Den Rest erledigt die Case-Anweisungslogik.

Zusammenfassung

In diesem Artikel haben wir die Grundlagen der Bash-Shell-Skripterstellung behandelt und die am häufigsten verwendeten logischen Konstrukte beschrieben, darunter einzelne if Anweisung if-else Anweisung und elif Aussage.

Wir hoffen, Sie fanden diesen Artikel hilfreich. Wenn ja, bitte, bitte, helfen Sie uns, es in der Welt zu verbreiten!


Linux
  1. Alles, was Sie über MySQL wissen müssen

  2. Alles, was Sie über MySQL wissen müssen

  3. So verwenden Sie den Linux-Zeitbefehl:Alles, was Sie wissen müssen

  4. Was ist VPS-Hosting? Alles, was Sie über Virtual Private Server wissen müssen

  5. Was Systemadministratoren über die Verwendung von Bash wissen müssen

Alles, was Sie über Linux OpenSSH Server wissen müssen

Alles, was Sie über Linux Zorin OS wissen müssen

Alles, was Sie über Peppermint Linux OS wissen müssen

Alles, was Sie über die Linux Mint-Distribution wissen müssen

Alles, was Sie über Inodes in Linux wissen müssen

Nützliche Bash-Befehle, die Sie vielleicht nicht kennen