Bash Si declaración


Ejemplo

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

El cierre de fi es necesario, pero se pueden omitir las cláusulas elif y / o else .

Los puntos y coma antes de then son sintaxis estándar para combinar dos comandos en una sola línea; solo se pueden omitir si then se mueve a la siguiente línea.

Es importante entender que los corchetes [[ no son parte de la sintaxis, pero se tratan como un comando; es el código de salida de este comando que se está probando. Por lo tanto, siempre debe incluir espacios alrededor de los corchetes.

Esto también significa que el resultado de cualquier comando puede ser probado. Si el código de salida del comando es un cero, la declaración se considera verdadera.

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

Las expresiones matemáticas, cuando se colocan entre paréntesis dobles, también devuelven 0 o 1 de la misma manera, y también se pueden probar:

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

También puede encontrar if declaraciones con corchetes simples. Estos se definen en el estándar POSIX y se garantiza que funcionarán en todas las carcasas compatibles con POSIX, incluyendo Bash. La sintaxis es muy similar a la de 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