Costrutti condizionali
All'interno di uno script, è spesso utile poter controllare
delle condizioni, per decidere che azione intraprendere.
Questo permette di ottenere un comportamento equivalente
allo statement if
presente nella maggior
parte dei linguaggi di programmazione.
L'ingrediente base per questi controlli è il programma
test
, che può essere un software effettivamente
installato, oppure una funzionalità offerta dalla bash.
Tramite test
è possibile controllare varie condizioni.
Supponiamo ad esempio di voler leggere un file di nome
file.txt
, ma di voler controllare che sia leggibile
prima di procedere con la lettura. Allora, potremmo controllare
la condizione con il comando
$ test -r file.txtQuesto comando non stampa nulla, ma il suo return code viene settato a zero (sinonimo di "successo") solo nel caso in cui il file sia leggibile.
L'istruzione if
Tramite il comando test
, combinato con l'istruzione
if
, possiamo realizzare il controllo che ci eravamo
proposti di implementare:
#!/bin/bash # Leggo il file file.txt, ma solo se esiste ed è leggibile if test -r file.txt; then cat file.txt fiPer terminare il comando
if
, si usa il comando
scritto al contrario, ovvero fi
.
Dato che il comando test
si usa molto spesso,
all'interno della bash è possibile abbreviarlo con la sintassi:
[ -r file.txt ]che è completamente equivalente alla scrittura precedente. Avremmo quindi potuto riscrivere il comando
if
come segue:
#!/bin/bash # Leggo il file file.txt, ma solo se esiste ed è leggibile if [ -r file.txt ]; then cat file.txt fi
Esistono molti altri confronti che è possibile eseguire con
test
. Ad esempio, scrivendo
test A -eq B
possiamo controllare se l'intero
A
è uguale a B
. Per vedere tutti
i controlli che è possibile effettuare, controllare il
manuale.