In diesem Tutorial zum Linux-Bash-Shell-Skripting lernen wir, wie man Zahlen, Strings und Dateien in Shell-Skripten mit der if-Anweisung vergleicht. Vergleiche in einem Skript sind sehr nützlich und nach dem Vergleichsergebnis führt das Skript die Befehle aus und wir müssen wissen, wie wir sie zu unserem Vorteil nutzen können.
Syntax von Vergleichen in Shellscript
if [ conditions/comparisons] then commands fi
Ein Beispiel
if [2 -gt 3] then print "2 is greater" else print "2 is not greater" fi
Dies war nur ein einfaches Beispiel für einen numerischen Vergleich und wir können komplexere Anweisungen oder Bedingungen in unseren Skripten verwenden. Lassen Sie uns nun numerische Vergleiche etwas detaillierter lernen.
Zahlen im Linux-Shell-Skript vergleichen
Dies ist eine der gebräuchlichsten Bewertungsmethoden, dh der Vergleich von zwei oder mehr Zahlen. Wir werden jetzt ein Skript für den numerischen Vergleich erstellen, aber bevor wir das tun, müssen wir die Parameter kennen, die zum Vergleichen von numerischen Werten verwendet werden. Unten aufgeführt ist die Liste der Parameter, die für numerische Vergleiche verwendet werden
- num1 -eq num2 Prüfen Sie, ob die 1. Zahl gleich der 2. Zahl ist
- num1 -ge num2 prüft, ob die erste Zahl größer oder gleich der zweiten Zahl ist
- num1 -gt num2 prüft, ob die erste Zahl größer als die zweite Zahl ist
- num1 -le num2 prüft, ob die 1. Zahl kleiner oder gleich der 2. Zahl ist
- num1 -lt num2 prüft, ob die erste Zahl kleiner als die zweite Zahl ist
- num1 -ne num2 prüft, ob die erste Zahl ungleich der zweiten Zahl ist
Da wir nun alle Parameter kennen, die für numerische Vergleiche verwendet werden, lassen Sie uns diese in einem Skript verwenden,
#!/bin/bash # Script to do numeric comparisons var1=10 var2=20 if [ $var2 -gt $var1 ] then echo "$var2 is greater than $var1" fi # Second comparison If [ $var1 -gt 30] then echo "$var is greater than 30" else echo "$var1 is less than 30" fi
Dies ist der Vorgang zum Durchführen numerischer Vergleiche. Kommen wir nun zu Zeichenfolgenvergleichen.
Zeichenfolgen im Linux-Shell-Skript vergleichen
Beim Erstellen eines Bash-Skripts müssen wir möglicherweise auch zwei oder mehr Zeichenfolgen vergleichen, und das Vergleichen von Zeichenfolgen kann etwas schwierig sein. Für String-Vergleiche werden folgende Parameter verwendet:
- var1 =var2 prüft, ob var1 mit String var2 identisch ist
- var1 !=var2 überprüft, ob var1 nicht mit var2 identisch ist
- var1
- var1> var2 prüft, ob var1 größer als var2 ist
- -n var1 prüft, ob var1 eine Länge größer als Null hat
- -z var1 prüft, ob var1 eine Länge von Null hat
Hinweis :- Sie haben vielleicht bemerkt, dass die hier verwendeten Symbole „Größer als“ (>) und „Kleiner als“ (<) auch für die Umleitung für stdin verwendet werden oder stdout unter Linux. Dies kann ein Problem sein, wenn diese Symbole in unseren Skripten verwendet werden. Was kann also getan werden, um dieses Problem zu beheben.
Die Lösung ist einfach, wenn Sie eines dieser Symbole in Skripten verwenden, sollten sie mit Escape-Zeichen verwendet werden, d. h. verwenden Sie es als „/>“ oder „/<“.
Lassen Sie uns nun ein Skript erstellen, das die Zeichenfolgenvergleiche durchführt.
Im Skript prüfen wir zunächst die Gleichheit der Zeichenfolgen. Dieses Skript prüft, ob der Benutzername und unsere definierten Variablen gleich sind, und liefert darauf basierend eine Ausgabe. Zweitens werden wir einen Größer-als-oder-kleiner-als-Vergleich durchführen. In diesen Fällen ist das letzte Alphabet, d. h. z, am höchsten und Alphabet a am niedrigsten, wenn verglichen wird. Und Großbuchstaben werden weniger als Kleinbuchstaben betrachtet.
#!/bin/bash # Script to do string equality comparison name=linuxtechi if [ $USER = $name ] then echo "User exists" else echo "User not found" fi # script to check string comparisons var1=a var2=z var3=Z if [ $var1 \> $var2 ] then echo "$var1 is greater" else echo "$var2 is greater" fi # Lower case & upper case comparisons if [ $var3 \> $var1 ] then echo "$var3 is greater" else echo "$var1 is greater" fi
Wir werden jetzt ein weiteres Skript erstellen, das „-n verwendet “ &„-z ” mit Zeichenfolgen, um zu prüfen, ob sie einen Wert enthalten
#!/bin/bash # Script to see if the variable holds value or not var1=" " var2=linuxtechi if [ -n $var1 ] then echo "string is not empty" else echo "string provided is empty" fi
Hier haben wir nur den Parameter „-n“ verwendet, aber wir können auch „-z verwenden “. Der einzige Unterschied besteht darin, dass mit „-z“ nach Zeichenfolgen mit der Länge Null gesucht wird, während der Parameter „-n“ nach Werten sucht, die größer als Null sind.
Dateivergleich im Linux Shell Script
Dies könnte die wichtigste Funktion des Vergleichs sein und wird wahrscheinlich am häufigsten verwendet als jeder andere Vergleich. Die Parameter, die für den Dateivergleich verwendet werden, sind
- -d Datei prüft, ob die Datei existiert und ob es sich um ein Verzeichnis handelt
- -e Datei überprüft, ob die Datei auf dem System existiert
- -w Datei prüft, ob die Datei auf dem System existiert und ob sie beschreibbar ist
- -r Datei prüft, ob die Datei auf dem System existiert und lesbar ist
- -s-Datei prüft, ob die Datei im System vorhanden und nicht leer ist
- -f Datei prüft, ob die Datei auf dem System existiert und es sich um eine Datei handelt
- -O Datei prüft, ob die Datei auf dem System existiert und ob sie dem aktuellen Benutzer gehört
- -G-Datei prüft, ob die Datei existiert und ob die Standardgruppe mit dem aktuellen Benutzer identisch ist
- -x Datei prüft, ob die Datei auf dem System existiert und ausführbar ist
- Datei A -nt Datei B prüft, ob Datei A neuer als Datei B ist
- Datei A -ot Datei B prüft, ob Datei A älter als Datei B ist
Hier ist ein Skript, das den Dateivergleich verwendet
#!/bin/bash # Script to check file comparison dir=/home/linuxtechi if [ -d $dir ] then echo "$dir is a directory" cd $dir ls -a else echo "$dir is not exist" fi
Ebenso können wir auch andere Parameter in unseren Skripten verwenden, um Dateien zu vergleichen. Damit ist unser Tutorial zur Verwendung von numerischen, Zeichenfolgen- und Dateivergleichen in Bash-Skripten abgeschlossen. Denken Sie daran, dass Sie diese am besten lernen, indem Sie sie selbst üben.
Lesen Sie auch :Erstellen von Hard- und Soft-Links (Symlink) auf Linux-Systemen