Obiettivi didattici
All’interno di questa lezione approfondiremo:
- L’uso delle strutture condizionali
if,else,elif. - Il costrutto
caseper gestire più opzioni. - Applicazione pratica dei controlli logici negli script Bash.
📋 Indice della lezione
- Introduzione
- Sintassi e regole di
if-elsein Bash - Il costrutto
caseper molteplici condizioni - Esempi pratici
- Esercizio finale
- Quiz a scelta multipla
- FAQ
- Checklist
1. Introduzione
Le condizioni e il controllo di flusso sono fondamentali in Bash: permettono allo script di “decidere” cosa eseguire in base a una situazione. In questa lezione vedremo come usare if, elif, else e case per programmare flussi logici dinamici.
2. if, elif, else
🪛 Sintassi base
if [ condizione ]; then
comandi
elif [ altra_condizione ]; then
altri_comandi
else
comandi_predefiniti
fi
📄 Note:
- Le parentesi
[ … ]richiedono spazi esterni. - Usare
-f,-d,-z,-n,=,-eq, etc. per valutazioni. - Stringhe con doppie virgolette per sicurezza.
Esempio: controllo di esistenza
if [ -f /etc/passwd ]; then
echo "Esiste"
else
echo "Non esiste"
fi
3. Costrutto case
Il comando case è utile quando una variabile può assumere più valori diversi:
case $variabile in
valore1)
comandi1;;
valore2|valore3)
comandi2;;
*)
comandi_default;;
esac
🔧 Vantaggi:
- Codice più leggibile rispetto a molteplici
elif. - Ideale per selezionare tra scelte fisse.
- Come approfondito nella guida “Switch (programmazione)” su Wikipedia (it.wikipedia.org).
4. Esempi pratici
Esempio 1: if con input utente
#!/bin/bash
echo "Inserisci un numero:"
read num
if [ "$num" -gt 0 ]; then
echo "Numero positivo"
elif [ "$num" -lt 0 ]; then
echo "Numero negativo"
else
echo "Zero"
fi
Esempio 2: case con scelta testuale
#!/bin/bash
echo "Scegli un'opzione (start|stop|status):"
read cmd
case "$cmd" in
start) echo "Avvio servizio";;
stop) echo "Arresto servizio";;
status) echo "Stato servizio";;
*) echo "Comando sconosciuto";;
esac
5. Esercizio finale
Crea uno script giorno.sh che:
- Chiede all’utente il nome del giorno della settimana.
- Usa
caseper rispondere “giorno lavorativo” o “weekend”. - Implementa un controllo con
ifse l’input è vuoto o non valido. - 🔷 Lezione 14 completata
6. Quiz a scelta multipla
- Quale costrutto gestisce più opzioni senza usare
elif?- A)
if - B)
case✅
- A)
- Come si chiude un blocco
ifin Bash?- A)
end - B)
fi✅
- A)
- Quale operatore verifica l’uguaglianza tra stringhe?
- A)
-eq - B)
=✅
- A)
7. FAQ
Q1: [ ... ] e [[ ... ]]: differenze?
A: [[ supporta pattern e regex, è più sicuro. [ ... ] è standard POSIX.
Q2: Posso usare case per confronto numerico?
A: No, case funziona solo su stringhe. Usa if + -eq, -gt, ecc.
Q3: Serve il ;; dopo ogni blocco case?
A: Sì, serve a terminare il blocco di comandi per quel case.
Link interno suggerito: Guida a script Bash base su saperesemplice.com
Link esterno autorevole: Documentazione ufficiale GNU Bash – Conditional Expressions
