Scrivere uno script di Bourne Again Shell (Bash) può essere un’esperienza gratificante, specialmente quando vi aggiungi logica, assicurandoti della sua robustezza. Un modo per incorporare questa logica, rendendo il tuo script più intelligente, è attraverso l’uso di istruzioni condizionali, in particolare il ‘bash if else’.
In questa approfondita esplorazione, stai per comprendere il potere e le sfumature delle istruzioni if-else e case di Bash. Questo ti aiuterà a creare script Bash privi di errori e intelligenti. Aggiungeremo anche alcune best practices per assicurarci che tu stia scrivendo script come un professionista.
Emozionato? Approfondisci e eleva la tua competenza nello scripting Bash!
Preparazione del Terreno: Prerequisiti
Per trarre il massimo da questo tutorial, ci sono alcune cose essenziali che dovresti avere a disposizione:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
Perché Dovresti Sfruttare le Istruzioni ‘bash if else’?
Perché le istruzioni condizionali sono così apprezzate nello scripting Bash? In poche parole, dotano i tuoi script di capacità decisionali basate su condizioni predefinite.
Ad esempio, puoi utilizzare ‘bash if else’ per verificare se un file esiste prima di tentarne l’eliminazione. In alternativa, potresti voler verificare se un utente possiede le autorizzazioni necessarie prima di consentirgli l’accesso a una risorsa.
Infondere script con strutture ‘bash if else’ non solo amplifica la loro flessibilità, ma anche la loro potenza. Immagina uno script progettato per eliminare tutti i file in una cartella. Utilizzando ‘bash if else’, puoi eliminare chirurgicamente solo quei file più vecchi di 30 giorni, preservando il resto.
Approfondiamo la dichiarazione ‘bash if else’
Ora, lasciamo da parte l’introduzione e mettiamoci all’opera. Inizieremo con una delle dichiarazioni condizionali più universalmente accettate: la dichiarazione ‘bash if else’.
Al suo cuore, il ‘bash if else’ è una porta d’ingresso per inserire condizioni nei tuoi script Bash. Osserva la sua sintassi elegante di seguito:
- Inizia con la parola chiave if, seguita dalle condizioni racchiuse tra [[ ]]. Successivamente, il codice all’interno della dichiarazione ‘bash if else’ viene eseguito, concludendosi con la parola chiave fi.
- La parola chiave then separa la condizione dalle azioni (o dichiarazioni) che vengono eseguite quando le condizioni sono soddisfatte. Questo blocco di azioni può estendersi su più linee, separate da punti e virgola (;).
Immagina di scrivere uno script per un sistema di accesso. Richiede l’inserimento del nome utente corretto prima di concedere l’accesso:
1. Avvia il tuo terminale e inizia un nuovo file bash_if_demo.sh utilizzando il tuo editor di testo preferito. Questo sarà il nostro campo di gioco per comprendere le dichiarazioni ‘bash if else’.
2. Inserire l’esempio ‘bash if else’ fornito di seguito nel file bash_if_demo.sh. Una volta inserito, salvare le modifiche ed uscire dall’editor.
Lo script di esempio ‘bash if else’ richiede un nome utente. Se viene inserito il nome utente previsto, viene visualizzato un messaggio di benvenuto, integrato dalla data e dall’ora corrente.
Mantenere un registro della data e dell’ora dei tentativi di accesso degli utenti può essere prezioso per future analisi.
La linea introduttiva #!/bin/bash (comunemente conosciuta come shebang) indica al sistema l’interprete da utilizzare per elaborare il codice successivo nello script. Qui, ‘bash’ è il nostro interprete scelto.
3. Ora, mettiamo alla prova il nostro script ‘bash if else’. Esegui il comando qui sotto:
Ricorda, indipendentemente dalla variante della shell Bash che stai utilizzando, aggiungi il prefisso ‘bash’ al nome del tuo script. Questo assicura che il sistema utilizzi Bash per l’esecuzione dello script.
Inserisci “ATA” e premi Invio. Il risultato dovrebbe assomigliare al seguente:

Se inserisci qualsiasi cosa diversa da “ATA”, il messaggio di benvenuto sarà assente dall’output. Sarà mostrata solo la data e l’ora corrente. Questo comportamento è dovuto all’istruzione ‘bash if else’ che controlla una corrispondenza precisa con il valore nella variabile $NAME.
Nota che le istruzioni ‘bash if else’ sono sensibili alle maiuscole e minuscole. Pertanto, “ata”, “aTa”, “Ata” e così via, sono diverse da “ATA”.

Testa costantemente i tuoi script ‘bash if else’ con input variabili. Ciò assicura che gli script funzionino come previsto.
Approfondimento: Istruzioni ‘bash if else’ nidificate
Hai già compreso i fondamenti della creazione di istruzioni ‘bash if else’. Mentre questa conoscenza di base è sufficiente per compiti semplici, gli script complessi spesso richiedono costrutti avanzati. Qui entrano in gioco le istruzioni ‘bash if else’ nidificate. Essenzialmente, è un’istruzione ‘if’ che contiene una o più istruzioni ‘if’ aggiuntive.
La struttura seguente illustra la sintassi di base per le istruzioni ‘bash if else’ nidificate. Qui, la clausola esterna if [[ condizioni ]]
comprende codice eseguibile solo al verificarsi della condizione. Nel nostro contesto, il codice nidificato è un’altra istruzione ‘if’.
if [[ condizioni ]]
– Questo rappresenta l’istruzione esterna ‘if else’ di bash. Il codice nidificato (un’altra istruzione ‘if’) viene eseguito solo se la condizione specificata è vera.if [[ condizione2 ]]
– Questo rappresenta la clausola interna ‘if else’ di bash. Contiene il codice che viene eseguito solo se entrambe le condizioni sono soddisfatte.
Andiamo più in profondità. Potenziando il nostro precedente esempio di ‘if else’ di bash, includeremo ora un’istruzione if
che chiede una password:
1. Innanzitutto, crea un nuovo file intitolato bash_nested_if_demo.sh utilizzando il tuo editor di testo preferito.
2. Trasferisci il codice ‘if else’ di bash fornito di seguito nel file bash_nested_if_demo.sh, salva le tue modifiche e chiudi l’editor.
Questo codice ‘if else’ di bash richiede sia un nome che una password. Se le condizioni per il nome e la password coincidono, viene visualizzato un messaggio particolare. Se non c’è corrispondenza, l’output mostra solo la data e l’ora correnti.
3. Ora, vediamo questo script ‘bash if else’ in azione. Esegui il comando seguente:
Per risultati ottimali, inserisci ATA come nome utente e pwd123 come password.

Se i tuoi inserimenti si discostano da “ATA” o “pwd123”, l’unico feedback che riceverai riguarda la data e l’ora attuali. Ciò è dovuto alla struttura ‘bash if else’ che richiede il soddisfacimento di entrambe le condizioni.

Decodifica delle Dichiarazioni ‘Bash If Else’
Le dichiarazioni ‘bash if else’ sono pietre miliari nello scripting di Bash, fornendo capacità decisive ai tuoi script. Tuttavia, è cruciale comprendere che l’uso delle dichiarazioni ‘if’ non è privo di svantaggi.
Il problema evidente è che un eccessivo ricorso al ‘if’ può appesantire il tuo codice, rendendolo noioso e complesso, specialmente quando entrano in gioco molteplici dichiarazioni ‘if’ annidate. Tali script rischiano di diventare un “codice spaghetti”, caratterizzato da una ridotta leggibilità e una maggiore complessità.
Quindi, come puoi rendere più comprensibile il tuo script ‘bash if else’? Opta per le dichiarazioni ‘if else’ invece di un ammasso di ‘if’ annidati. La parola chiave ‘else’ offre il vantaggio di specificare un blocco di codice da eseguire nel caso in cui la condizione ‘if’ non sia soddisfatta.
Per una visione più chiara, considera la sintassi di ‘Bash If Else’ qui sotto, dove:
if [[ condizioni ]]
– Qui, la dichiarazione ‘bash if else’ include il codice (dichiarazione1
) che si attiva solo quando la condizione dichiarata è valida.else
– Questo fa parte della struttura ‘bash if else’. L’istruzioneelse
comprende il codice (dichiarazione2
) che viene eseguito quando la condizione nella precedente clausolaif
non è soddisfatta.
Immagina di creare un semplice gioco ‘bash if else’ in cui il sistema si aspetta un numero casuale dall’utente:
1. Inizia creando un nuovo file chiamato bash_if_else_demo.sh.
2. Integra il successivo codice ‘bash if else’ nel tuo file bash_if_else_demo.sh, salva le modifiche e poi esci.
Il codice ‘bash if else’ sottostante chiede all’utente il suo numero fortunato. Se l’input è pari, visualizza il messaggio ‘Hai vinto!’. Altrimenti, un numero dispari attiva l’output ‘Hai perso!’.
3. Per vedere lo script ‘bash if else’ in azione, eseguire il comando seguente:
Dopo aver inserito un numero pari, dovresti vedere il messaggio “Hai vinto con ‘bash if else’!”. Al contrario, inserire un numero dispari dovrebbe produrre il feedback “Hai perso usando ‘bash if else’!”.

Per arricchire lo script ‘bash if else’, considera di incorporare un segmento che determina se l’utente inserisce una lettera o un carattere distinto invece di un numero.
Decodifica degli ‘If Else’ Bash e delle Dichiarazioni di Caso
A questo punto, hai esplorato un paio di metodi per prendere decisioni nei tuoi script Bash, ovvero le istruzioni ‘bash if else’. Ma Bash offre un’altra via per prendere decisioni: l’istruzione case
.
Simile al ‘bash if else’, l’istruzione case
è abile nel specificare sequenze di codice da eseguire in base a condizioni specificate. Un vantaggio notevole dell’istruzione case è la sua estrema concisione e chiarezza, specialmente quando confrontata con scenari ‘bash if else’ nidificati.
Per comprendere appieno l’alternativa del ‘bash if else’, approfondiamo la sintassi dell’istruzione case:
case $VAR in
– Questo segmento della struttura case valuta la variabile$VAR
rispetto ai pattern definiti fino a quando non viene trovata una corrispondenza.pattern1)
epattern2)
– Questi sono i criteri da testare e, una volta individuata una corrispondenza, il codice corrispondente (statement1
ostatement2
) entra in azione.esac
– Conclude la struttura case.
Immagina di progettare uno script ‘bash if else’ in cui gli utenti inseriscono i nomi dei loro paesi e, in risposta, lo script visualizza la lingua predominante di quel paese.
1. Inizia generando un file chiamato bash_case_demo.sh.
2. Incorpora il codice ‘bash if else’ fornito di seguito nel tuo file bash_case_demo.sh, quindi salva ed esci.
Lo script ‘bash if else’ che ne deriva chiederà all’utente il nome del proprio paese e, in base ai pattern ‘case’, stamperà la lingua principale parlata nel paese menzionato.
3. Per sperimentare questo script ‘bash if else’ di persona, utilizza il comando successivo:
Noterai che lo script evidenzia correttamente la lingua in base al paese scelto dall’utente.
Se il paese fornito non corrisponde ai pattern specificati, viene attivato il pattern (*) predefinito, con conseguente output “sconosciuto”.

Conclusione degli statement condizionali di Bash
In questa guida, hai intrapreso il viaggio per comprendere ‘bash if else’ e altri statement condizionali in Bash. Dalla semplice istruzione ‘if’ agli intricati statement ‘if-else’ e ‘case’, ora sei dotato degli strumenti essenziali per uno scripting Bash efficace.
Con queste basi del ‘bash if else’, puoi costruire script Bash in modo più efficiente, riducendo al minimo la possibilità di errori.
Ma ricorda, questo è solo la punta dell’iceberg. Bash offre una vasta gamma di istruzioni condizionali. Forse, considera di approfondire la dichiarazione elif di Bash e gli operatori &&, OR e || per una comprensione più approfondita. Con dedizione, padroneggiare lo scripting di Bash sarà presto alla portata!