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