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

So vergleichen Sie Zahlen und Zeichenfolgen im Linux-Shell-Skript

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


Linux
  1. So machen Sie Ihr Linux-Terminal und Ihre Shell weihnachtlich

  2. So definieren und verwenden Sie Funktionen in Linux Shell Script

  3. So setzen/erstellen Sie Umgebungs- und Shell-Variablen in Linux

  4. So vergleichen Sie Zeichenfolgen in Bash Shell-Skripten

  5. So prüfen Sie, ob eine Gruppe vorhanden ist, und fügen sie hinzu, wenn dies nicht der Fall ist, in Linux Shell Script

So installieren und verwenden Sie die ZSH-Shell unter Linux

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So installieren und verwenden Sie Nu Shell unter Linux

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

So installieren Sie Fish Shell unter Ubuntu und Linux Mint

Shell/Bash-Skript zum Finden von Primzahlen in Linux