Un'altra struttura di controllo molto utile è l' if <programma che calcola una condizione> then <operazioni da svolgere se il programma ha ritornato stato 0> fi
Esiste anche la forma if <programma che calcola una condizione> then <operazioni da svolgere se il programma ha ritornato stato 0> else <operazioni da svolgere se il programma ha ritornato stato diverso da 0> fi
Se si devono controllare una serie di condizioni con azioni diverse, al posto dell' else nel quale si inserisce un nuovo if completo, si può utilizzare elif. Indicheremo la condizione e le azioni e chiuderemo il tutto con un solo fi
La condizione da verificare è in realtà un programma che viene lanciato.
Ogni programma quando termina la sua esecuzione restituisce un valore numerico di ritorno alla shell. Per convenzione, se questo valore è 0 il programma è terminato con successo.
If lancia il programma e valuta il suo valore di ritorno. Se esso è 0 (programma terminato con successo) esegue le istruzioni contenute nel blocco then, se è diverso da 0 (programma terminato con errori) esegue, se ci sono, le istruzioni nel blocco else o l'elif.
Come condizione può essere usato qualunque programma (grep per esempio è molto utile). Esiste il programma [ (vedere man [) che è pensato specificatamente per quest'uso: serve per valutare una lunga serie di condizioni.