Con un'istruzione if, che è un tipo di istruzione condizionale, è possibile eseguire azioni diverse a seconda delle condizioni specificate. Fornisce efficacemente al sistema la capacità di prendere decisioni.
Un esempio della forma più semplice di un'istruzione if sarebbe:
count = 5 if $ count == 5 then echo "$ count" fi
In questo esempio, la variabile "conteggio" viene utilizzata per specificare una condizione che viene utilizzata come parte dell'istruzione if. Prima che venga eseguita l'istruzione if, alla variabile "count" viene assegnato il valore "5". L'istruzione if controlla quindi se il valore di "count" è "5". In questo caso, viene eseguita l'istruzione tra le parole chiave "then" e "fi", altrimenti vengono eseguite tutte le istruzioni successive all'istruzione if. La parola chiave "fi" è "se" scritta all'indietro. Il linguaggio di scripting bash utilizza questa convenzione per contrassegnare la fine di un'espressione complessa, una tale if-statement o case-statement.
L'istruzione "echo" stampa il suo argomento, in questo caso, il valore della variabile "count", nella finestra del terminale. L'indentazione del codice tra le parole chiave dell'istruzione if migliora la leggibilità ma non è necessaria.
Se si dispone di una situazione in cui una parte di codice deve essere eseguita solo se una condizione non è vera, è possibile utilizzare la parola chiave "else" in un'istruzione if, come in questo esempio:
count = 5 if $ count == 5 then echo "$ count" altrimenti echo "count non è 5" fi
Se la condizione "$ count == 5" è vera, il sistema stampa il valore della variabile "count", altrimenti stampa la stringa "count is not 5".
Se si desidera distinguere tra più condizioni, è possibile utilizzare la parola chiave "elif", che deriva da "else if", come in questo esempio:
se $ count == 5 then echo "count is five" elif $ count == 6 then echo "count is six" else echo "nessuno dei precedenti" fi
Se "contare" è "5", il sistema stampa "il conteggio è cinque". Se "contare" non è "5" ma "6", il sistema stampa "il conteggio è sei". Se non è né "5" né "6", il sistema stampa "nessuna delle precedenti".
Come avrai intuito, puoi avere un numero qualsiasi di clausole "elif". Un esempio con più condizioni "elif" sarebbe:
if $ count == 5 then echo "count is five" elif $ count == 6 then echo "count is six" elif $ count == 7 then echo "count is seven" elif $ count = = 8 then echo "count is eight" elif $ count == 9 then echo "count is nine" else echo "nessuno dei precedenti" fi
Un metodo più compatto per scrivere tali dichiarazioni con più condizioni è il metodo dei casi. Funziona in modo simile all'istruzione if con più clausole "elif" ma è più conciso. Ad esempio, la parte di codice sopra riportata può essere riscritta con la frase "case" come segue:
case "$ count" in 5) echo "count is five" ;; 6) echo "count is six" ;; 7) echo "count is seven" ;; 8) echo "count is eight" ;; 9) echo "count is nine" ;; *) echo "nessuno dei precedenti" esac
Le istruzioni if vengono spesso utilizzate all'interno di for-loops o while-loop come in questo esempio:
count = 1 done = 0 mentre $ count -le 9 fa sleep 1 ((count ++)) if $ count == 5 then continue fi echo "$ count" done echo Finito
Puoi anche avere istruzioni nidificate if. La dichiarazione nidificata più semplice è nella forma: se … allora … altro … se … allora … fi … fi. Tuttavia, if-statement può essere annidato con complessità arbitraria.
Vedi anche come passare argomenti a uno script di bash, che mostra come utilizzare i condizionali per elaborare i parametri passati dalla riga di comando.
La shell bash fornisce altri costrutti di programmazione, come for-loops, while-loops e espressioni aritmetiche.