Quando si lavora con Bash e script di shell, potrebbe essere necessario utilizzare le condizioni nel tuo script.
Nella programmazione, le condizioni sono cruciali:vengono utilizzate per affermare se alcune condizioni sono vere o no.
In questo tutorial, ci concentreremo su una delle istruzioni condizionali del linguaggio Bash:l'istruzione Bash if else.
Vedremo come puoi utilizzare questa istruzione per eseguire i tuoi script in modo condizionale.
Imparerai anche come utilizzare Bash se altro nidificato istruzioni per creare codice più complesso.
Bash If Else Statement
Per eseguire un'istruzione "if else" di Bash, devi utilizzare quattro parole chiave diverse:if, then, else e fi :
- se :rappresenta la condizione che vuoi controllare;
- allora :se la condizione precedente è vera, esegui un comando specifico;
- altro :se la condizione precedente è falsa, esegui un altro comando;
- Fi :chiude l'istruzione "if, then, else".
Quando utilizzi l'istruzione "se altro", dovrai racchiudere le condizioni tra parentesi quadre singole o doppie.
if [[ condition ]]
then
<execute command>
else
<execute another command>
fi
Tieni presente che l'istruzione "ELSE" è opzionale , se lo ometti, non verrà eseguito nulla se la condizione restituisce false.
Nota :devi separare la condizione dalle parentesi quadre con uno spazio, altrimenti potresti ricevere un errore di sintassi.
Se altri esempi
Ora che ne sai di più su Bash "se altro" dichiarazione, vediamo come puoi usarla in esempi del mondo reale.
In questa sezione creeremo uno script che stampa un messaggio se viene eseguito dall'utente root.
Se lo script non viene eseguito dall'utente root, scriverà un altro messaggio personalizzato.
Per verificare se lo script viene eseguito da root, dobbiamo vedere se l'UID del chiamante è zero.
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
else
echo "You are not root."
fi
Come affermato in precedenza, il "altro ” la dichiarazione non è obbligatoria.
Se omettiamo nel nostro script creato in precedenza, saremmo comunque in grado di eseguire la prima istruzione "then".
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
fi
Ora, cosa succede se desideri aggiungere ulteriori istruzioni "se" ai tuoi script?
Dichiarazione Bash If Elif
Il "Se Elif L'istruzione " viene utilizzata in Bash per aggiungere ulteriori istruzioni "if" ai tuoi script.
Per eseguire un'istruzione "if elif" di Bash, devi utilizzare cinque parole chiave diverse:if, then, elif, else e fi :
- se :rappresenta la condizione che vuoi controllare;
- allora :se la condizione precedente è vera, esegui un comando specifico;
- elisa :utilizzato per aggiungere una condizione aggiuntiva alla tua dichiarazione;
- altro :se le condizioni precedenti sono false, esegui un altro comando;
- Fi :chiude l'istruzione “if, elif, then”.
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
else
<execute default command>
fi
Anche in questo caso, l'istruzione "ELSE" è facoltativa, quindi potresti volerla omettere se non hai bisogno di un'istruzione predefinita.
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
fi
Se Elif Esempi
Nella nostra sezione precedente, abbiamo utilizzato "se altro ” per verificare se un utente è root o meno.
In questa sezione verificheremo se l'utente è root o se ha un UID di 1002.
In caso contrario, usciremo dallo script e restituiremo il prompt all'utente.
if [[ $UID -eq 0 ]]
then
echo "You are root!"
elif [[ $UID -eq 1002 ]]
then
echo "You are user, welcome!"
else
echo "You are not welcome here."
exit 1;
fi
Congratulazioni, ora sai come usare "if elif ” dichiarazione!
E se volessi avere più condizioni nella stessa istruzione "if"?
Condizioni multiple in caso contrario
Per avere più condizioni scritte nella stessa istruzione "se altro", devi separare le tue condizioni con un operatore "AND" o un operatore "OR".
# AND operator used in if else.
if [[ <condition_1> && <condition_2> ]];
then
<execute command>
fi
# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
<execute_command>
else
<execute_another_command>
fi
Ad esempio, se vuoi scrivere uno script che controlli che sei l'utente root e che hai fornito il parametro corretto, dovresti scrivere:
#!/bin/bash
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
echo "You provided the correct parameters"
else
echo "Wrong parameters, try again"
fi
Incastrato If Else Statements
In alcuni casi, desideri implementare condizioni nidificate in modo che le condizioni vengano verificate in condizioni preliminari.
Per avere le istruzioni nidificate "se altro", devi semplicemente includere l'istruzione "se" in un'altra istruzione "se" e chiudere la tua istruzione nidificata prima di quella che la racchiude.
if [[ condition ]]
then
if [[ other condition ]]
then
<execute command>
else
<execute another command>
fi
fi
Nota :assicurati di avere un'istruzione "fi" di chiusura per ogni istruzione "se" che apri. Un singolo "fi" semplicemente non è sufficiente per più istruzioni "se".
Esempi di istruzioni nidificate
Ad esempio, supponiamo di voler verificare che l'utente sia root prima di verificare che il primo argomento fornito sia zero.
Per risolverlo, dovresti scrivere un'istruzione "se, allora, altro" annidata nel modo seguente:
#!/bin/bash
if [[ $UID -eq 0 ]]
then
if [[ $1 -eq 0 ]]
then
echo "You are allowed to execute this script."
else
echo "You should have provided 0 as the first argument."
fi
fi
Bash test
Come probabilmente avrai notato, nelle sezioni precedenti, abbiamo utilizzato l'operatore "-eq" per confrontare un valore variabile con un numero.
Abbiamo eseguito un semplice controllo di uguaglianza, ma cosa succede se si desidera avere un controllo di disuguaglianza?
E se volessi verificare, ad esempio, se un valore è maggiore di un determinato numero?
Per eseguire questa operazione, avrai bisogno di Bash test .
I bash test sono un insieme di operatori che puoi utilizzare nelle tue istruzioni condizionali per confrontare i valori tra loro.
I test Bash possono essere elencati eseguendo il comando "help test".
$ help test
Quando scrivi i test Bash, hai essenzialmente tre opzioni:
- Scrivi le condizioni su file e directory :se esistono, se sono un file di caratteri, un file di dispositivo e così via;
- Scrivi le condizioni sui numeri :se sono uguali tra loro, se uno è maggiore dell'altro;
- Scrivi le condizioni sulle stringhe :se è impostata una variabile stringa o se due stringhe sono uguali tra loro.
Condizioni del file Bash
Condizioni del file Bash vengono utilizzati per verificare se un file esiste o meno, se può essere letto, modificato o eseguito.
I test dei file Bash sono descritti nella tabella seguente:
Operatore | Descrizione |
-e | Verifica se il file esiste o meno |
-d | Verifica se il file è una directory |
-b | Verifica se il file è un dispositivo a blocchi |
-c | Verifica se il file è un dispositivo di caratteri |
f1 -nt f2 | Se il file f1 è più recente del file f2 |
f1 -ot f2 | Se il file f1 è più vecchio del file f2 |
-r | Il file può essere letto (permesso di lettura) |
-w | Il file può essere modificato (permesso di scrittura) |
-x | Il file può essere eseguito (autorizzazione di esecuzione) |
Ad esempio, per verificare se un file è una directory, dovresti scrivere il seguente script
#!/bin/bash
# Checking the first argument provided
if [[ -d $1 ]]
then
echo "This is a directory"
else
echo "Not a directory"
fi
Condizioni numero Bash
Le condizioni del numero Bash vengono utilizzate per confrontare due numeri:se sono uguali, se uno è maggiore di un altro o minore di un altro.
Ecco una tabella delle condizioni dei numeri Bash più utilizzate:
Operatore | Descrizione |
num1 -eq num2 | Controlla se i numeri sono uguali |
num1 -ne num2 | Controlla se i numeri non sono uguali |
num1 -lt num2 | Verifica se num1 è inferiore a num2 |
num1 -le num2 | Inferiore o uguale a num2 |
num1 -gt num2 | Maggiore di num2 |
num1 -ge num2 | Maggiore o uguale a num2 |
Ad esempio, per verificare se un numero non è uguale a zero, dovresti scrivere :
#!/bin/bash
# Checking the first argument provided
if [[ $1 -eq 0 ]]
then
echo "You provided zero as the first argument."
else
echo "You should provide zero."
fi
Condizioni della stringa Bash
Le condizioni della stringa Bash vengono utilizzate per verificare se due stringhe sono uguali o se una stringa è vuota.
Ecco una tabella delle principali condizioni delle stringhe Bash:
Operatore | Descrizione |
str1 = str2 | Verifica se le stringhe sono uguali o meno |
str1 != str2 | Verifica se le stringhe sono diverse |
-z str1 | Verifica se str1 è vuoto |
-n str1 | Verifica se str1 non è vuoto |
Ad esempio, per verificare se un utente ha fornito un valore al tuo script, dovresti scrivere :
#!/bin/bash
# Checking the first argument provided
if [[ -n $1 ]]
then
echo "You provided a value"
else
echo "You should provide something"
fi
Conclusione
Nel tutorial di oggi, hai appreso della istruzione Bash "If Else".
Hai visto, con esempi, che puoi costruire istruzioni più complesse:usando elif e istruzioni nidificate.
Infine, hai scoperto i test Bash, cosa sono e come vengono utilizzati per verificare le condizioni negli script.
Se sei interessato all'amministrazione del sistema Linux, abbiamo una sezione completa ad essa dedicata sul sito Web, quindi assicurati di dare un'occhiata!