Per scrivere script che facciano qualcosa di utile, è essenziale poter eseguire comandi diversi in base a determinate condizioni. In Bash, questo si fa con l'istruzione `if`.
La Sintassi di Base
La sintassi di `if` in Bash è un po' particolare e richiede attenzione agli spazi.
if [ condizione ]; then
# comandi da eseguire se la condizione è vera
elif [ altra_condizione ]; then
# comandi da eseguire se l'altra condizione è vera
else
# comandi da eseguire se nessuna condizione è vera
fi
Punti chiave: `if` e `[` sono comandi separati, quindi devono esserci degli spazi. La condizione deve essere chiusa da `]`. La struttura termina sempre con `fi` (l'inverso di `if`).
Le Condizioni di Test `[ ]`
Le parentesi quadre `[` sono un alias per il comando `test`. All'interno si usano degli operatori per confrontare stringhe, numeri o controllare file.
Confronti tra Stringhe
- `if [ "$VAR1" = "$VAR2" ]`: Vero se le stringhe sono uguali.
- `if [ "$VAR1" != "$VAR2" ]`: Vero se sono diverse.
- `if [ -z "$VAR" ]`: Vero se la stringa è vuota.
- `if [ -n "$VAR" ]`: Vero se la stringa non è vuota.
È una buona pratica mettere sempre le variabili tra doppi apici per gestire correttamente gli spazi.
Confronti tra Numeri
- `-eq` (equal): Uguale
- `-ne` (not equal): Diverso
- `-gt` (greater than): Maggiore di
- `-ge` (greater or equal): Maggiore o uguale
- `-lt` (less than): Minore di
- `-le` (less or equal): Minore o uguale
NUM=10
if [ "$NUM" -gt 5 ]; then
echo "Il numero è maggiore di 5."
fi
Controlli sui File
- `if [ -f "/percorso/file" ]`: Vero se il file esiste ed è un file regolare.
- `if [ -d "/percorso/dir" ]`: Vero se esiste ed è una directory.
- `if [ -e "/percorso/qualcosa" ]`: Vero se esiste (file o directory).
Questa logica condizionale, combinata con la lettura di argomenti o l'input dell'utente, ti permette di creare script complessi e intelligenti.
Hai bisogno di una soluzione su misura?
Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.
Richiedi una consulenza