13.2.5 Condizionali
Ciascun comando ritorna uno stato di uscita che pu� essere
utilizzato per le espressioni condizionali:
-
Successo: 0 (Vero)
-
Errore: 1 - 255 (Falso)
Notate che l'utilizzo del valore 0 per "vero" differisce dalle
convenzioni usuali in altre aree di programmazione. In aggiunta, `[' �
l'equivalente del comando test
, che valuta i suoi argomenti fino a
`]' come espressione condizionale.
Idiomi condizionali basilari da ricordare sono:
comando && se_successo_lancia_anche_questo_comando
comando || se_non_ha_successo_lancia_anche_questo_comando
if [ espressione_condizionale ]; then
se_ha_successo_lancia_anche_questo_comando
else
se_non_ha_successo_lancia_anche_questo_comando
fi
Qui, || true era necessario per assicurarsi che lo script non
uscisse a questa riga accidentalmente, quando la shell era invocata con
l'opzione -e.
Gli operatori per la comparazione dei file nelle espressioni
condizionali sono:
-e file Vero se file esiste.
-d file Vero se file esiste ed � una directory.
-f file Vero se file esiste ed � un file regolare.
-w file Vero se file esiste ed � scrivibile.
-x file Vero se file esiste ed � eseguibile.
file1 -nt file2 Vero se file1 � pi� recente di file2. (modificato)
file1 -ot file2 Vero se file1 � pi� vecchio di file2. (modificato)
file1 -ef file2 Vero se se sono gli stessi numeri di inode e device.
Gli operatori di comparazione delle stringhe nelle espressioni
condizionali sono:
-z str Vero se la lunghezza di str � zero.
-n str Vero se la lunghezza di str � non-zero.
str1 == str2 Vero se str sono uguali.
str1 = str2 Vero se str sono uguali.
("=" dovrebbe essere usato al posto di "==", per una stretta
complianza POSIX )
str1 != str2 Vero se str non sono uguali.
str1 < str2 Vero se str1 viene prima di str2 (dipende da locale).
str1 > str2 Vero se str1 viene dopo str2 (dipende da locale).
Gli operatori aritmetici di comparazione degli interi nelle
espressioni condizionali sono -eq, -ne,
-lt, -le, -gt, o -ge.