Bash Se la dichiarazione


Esempio

if [[ $1 -eq 1 ]]; then
    echo "1 was passed in the first parameter"
elif [[ $1 -gt 2 ]]; then
    echo "2 was not passed in the first parameter"
else
    echo "The first parameter was not 1 and is not more than 2."
fi

Il fi chiusura è necessario, ma le elif e / o le else clausole possono essere omesse.

I punti e virgola prima di then sono la sintassi standard per combinare due comandi su una singola riga; possono essere omessi solo se then vengono spostati nella riga successiva.

È importante capire che le parentesi [[ non fanno parte della sintassi, ma sono trattate come un comando; è il codice di uscita da questo comando che viene testato. Pertanto, devi sempre includere spazi attorno alle parentesi.

Ciò significa anche che il risultato di qualsiasi comando può essere testato. Se il codice di uscita dal comando è uno zero, l'istruzione è considerata vera.

if grep "foo" bar.txt; then
    echo "foo was found"
else
    echo "foo was not found"
fi

Le espressioni matematiche, se poste all'interno di doppie parentesi, restituiscono anche 0 o 1 nello stesso modo e possono anche essere testate:

if (( $1 + 5 > 91 )); then
    echo "$1 is greater than 86"
fi

Si può anche venire attraverso if istruzioni con parentesi quadre singole. Questi sono definiti nello standard POSIX e sono garantiti per funzionare in tutti gli shell conformi a POSIX incluso Bash. La sintassi è molto simile a quella in Bash:

if [ "$1" -eq 1 ]; then
    echo "1 was passed in the first parameter"
elif [ "$1" -gt 2 ]; then
    echo "2 was not passed in the first parameter"
else
    echo "The first parameter was not 1 and is not more than 2."
fi