GNU/Linux >> Linux Esercitazione >  >> Linux

Come confrontare numeri e stringhe nello script della shell di Linux

In questo tutorial sullo scripting della shell bash di Linux, impareremo come confrontare numeri, stringhe e file nello script della shell usando l'istruzione if. I confronti in uno script sono molto utili e dopo il risultato del confronto, lo script eseguirà i comandi e dobbiamo sapere come usarli a nostro vantaggio.

Sintassi dei confronti nello script di shell

if [ conditions/comparisons]
    then
         commands
fi

Un esempio

if [2 -gt 3]
     then
     print "2 is greater"
     else
     print "2 is not greater"
fi

Questo era solo un semplice esempio di confronto numerico e possiamo usare istruzioni o condizioni più complesse nei nostri script. Ora impariamo i confronti numerici in modo un po' più dettagliato.

Confronta i numeri nello script della shell di Linux

Questo è uno dei metodi di valutazione più comuni, ovvero confrontare due o più numeri. Creeremo ora uno script per eseguire il confronto numerico, ma prima di farlo dobbiamo conoscere i parametri che vengono utilizzati per confrontare i valori numerici. Di seguito è riportato l'elenco dei parametri utilizzati per i confronti numerici

  • num1 -eq num2 controlla se il 1° numero è uguale al 2° numero
  • num1 -ge num2 controlla se il 1° numero  è maggiore o uguale al 2° numero
  • num1 -gt num2 controlla se il 1° numero è maggiore del 2° numero
  • num1 -le num2 controlla se il 1° numero è minore o uguale al 2° numero
  • num1 -lt num2 controlla se il 1° numero  è inferiore al 2° numero
  • num1 -ne num2 controlla se il 1° numero  non è uguale al 2° numero

Ora che conosciamo tutti i parametri utilizzati per i confronti numerici, usiamoli in uno script,

#!/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

Questo è il processo per eseguire il confronto numerico, ora passiamo ai confronti di stringhe.

Confronta le stringhe nello script della shell di Linux

Durante la creazione di uno script bash, potrebbe anche essere richiesto di confrontare due o più stringhe e confrontare le stringhe può essere un po' complicato. Per eseguire confronti di stringhe, i parametri utilizzati sono

  • var1 =var2     controlla se var1 è uguale alla stringa var2
  • var1 !=var2    controlla se var1 non è uguale a var2
  • var1
  • var1> var2     controlla se var1 è maggiore di var2
  • -n var1             controlla se var1 ha una lunghezza maggiore di zero
  • -z var1             controlla se var1 ha una lunghezza pari a zero

Nota :-  Avrai notato che maggiore di simbolo (>) e minore di simbolo (<) utilizzati qui vengono utilizzati anche per il reindirizzamento per stdin o stdout in Linux. Questo può essere un problema quando questi simboli vengono utilizzati nei nostri script, quindi cosa si può fare per risolvere questo problema.

La soluzione è semplice, quando si utilizza uno qualsiasi di questi simboli negli script, dovrebbero essere usati con il carattere di escape, ad esempio usarlo come "/>" o "/<".

Ora creiamo uno script che esegue il confronto delle stringhe.

Nello script, controlleremo prima l'uguaglianza delle stringhe, questo script verificherà se il nome utente e le nostre variabili definite sono uguali e fornirà un output basato su quello. In secondo luogo, faremo più o meno del confronto. In questi casi, l'ultimo alfabeto, ovvero z sarà il più alto e l'alfabeto a sarà il più basso rispetto al confronto. E le lettere maiuscole saranno considerate meno di una minuscola.

#!/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

Ora creeremo un altro script che utilizzerà "-n ” &“-z ” con stringhe per verificare se contengono un valore

#!/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

Qui abbiamo usato solo il parametro '-n' ma possiamo anche usare "-z “. L'unica differenza è che con '-z', cerca una stringa con lunghezza zero mentre il parametro "-n" cerca un valore maggiore di zero.

Confronto di file nello script della shell di Linux

Questa potrebbe essere la funzione di confronto più importante ed è probabilmente la più utilizzata di qualsiasi altro confronto. I parametri utilizzati per il confronto dei file sono

  • -d file                       controlla se il file esiste ed è una directory
  • -e file                        controlla se il file esiste sul sistema
  • -w file                       controlla se il file esiste sul sistema e se è scrivibile
  • -r file                       verifica se il file esiste sul sistema ed è leggibile
  • -s file                       verifica se il file esiste sul sistema e non è vuoto
  • -f file                        controlla se il file esiste sul sistema ed è un file
  • -O file                       controlla se il file esiste sul sistema e se è di proprietà dell'utente corrente
  • -G file                       verifica se il file esiste e il gruppo predefinito è lo stesso dell'utente corrente
  • -x file                        verifica se il file esiste sul sistema ed è eseguibile
  • file A -nt file B         controlla se il file A è più recente del file B
  • file A -ot file B          controlla se il file A è più vecchio del file B

Ecco uno script che utilizza il confronto dei file

#!/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

Allo stesso modo possiamo anche utilizzare altri parametri nei nostri script per confrontare i file. Questo completa il nostro tutorial su come utilizzare i confronti numerici, di stringhe e di file negli script bash. Ricorda, il modo migliore per imparare è esercitarti tu stesso.

Leggi anche :Come creare collegamenti hard e soft (collegamento simbolico) su sistemi Linux


Linux
  1. Come rendere natalizio il tuo terminale e shell Linux

  2. Come definire e utilizzare le funzioni in Linux Shell Script

  3. Come impostare/creare variabili di ambiente e shell in Linux

  4. Come confrontare le stringhe negli script di Bash Shell

  5. Come cambiare la shell in Linux

Come installare e utilizzare ZSH Shell in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come installare e utilizzare Nu Shell su Linux

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Come installare Fish Shell su Ubuntu e Linux Mint

Script Shell/Bash per trovare i numeri primi in Linux