Bash es un intérprete de lenguajes de comandos. Es un intérprete de comandos predeterminado en la mayoría de los sistemas GNU/Linux y está ampliamente disponible en varios sistemas operativos. El nombre es una abreviatura de Bourne-Again SHell . Las secuencias de comandos permiten la ejecución de instrucciones que, de lo contrario, se ejecutarían una por una de forma interactiva.
En este artículo, discutiremos acerca de la declaración if en bash scripting.
Si declaración
La sintaxis básica de una sentencia if es la siguiente:
if CONDITION then COMMANDS fi
La instrucción if se compone de la palabra clave if, la frase condicional y la palabra clave then. La palabra clave fi se usa al final de la instrucción. Los COMANDOS se ejecutan si la CONDICIÓN se evalúa como Verdadera. No pasa nada si CONDICIÓN devuelve Falso; los COMANDOS son ignorados.
Ejemplo:
El siguiente es un script de ejemplo que le pedirá que ingrese un número y luego verifica si el número dado es par.
echo -n "Enter Number: " read x if [ $((x%2)) == 0 ]; then echo "Number is Even" fi
Producción:
si… otra declaración
Una oración if…else tiene la siguiente sintaxis básica:
if CONDITION then COMMANDS_1 else COMMANDS_2 fi
COMMANDS_1 se ejecutará si CONDITION se evalúa como True. De lo contrario, COMMANDS_2 se ejecutará si CONDITION devuelve False. Solo puede haber una cláusula else en una declaración.
Ejemplo:
Ampliemos el script del ejemplo anterior para comprobar si el número dado es par o impar.
echo -n "Enter Number: " read x if [ $((x%2)) == 0 ]; then echo "Number is Even" else echo "Number is Odd" fi
Producción:
si…elif…else Declaración
La siguiente es la sintaxis básica de una instrucción if…elif…else:
if CONDITION_1 then COMMANDS_1 elif CONDITION_2 then COMMANDS_2 else COMMANDS_3 fi
COMMANDS_1 se ejecutará si CONDITION_1 se evalúa como True. COMMANDS_2 se ejecutará si CONDITION_2 se evalúa como True. COMMANDS_3 se ejecuta si ninguno de los comandos de prueba se evalúa como Verdadero.
En la declaración, puede haber una o más cláusulas elif. La cláusula else es opcional .
Ejemplo:
Aumentemos el código en el ejemplo anterior para agregar la condición para verificar el cero.
echo -n "Enter Number: " read x if [ $x == 0 ]; then echo "Number is Zero" elif [ $((x%2)) == 0 ]; then echo "Number is Even" else echo "Number is Odd" fi
Producción:
Instrucción if anidada
Las sentencias if se pueden anidar dentro de sentencias if en Bash. Se pueden anidar varias sentencias if dentro de otra sentencia if. Algo como esto:
if CONDITION_1 then if CONDITION_2 then COMMANDS_1 else COMMANDS_2 fi else COMMANDS_3 fi
Si tanto CONDITION_1 como CONDITION_2 se evalúan como True, se ejecutarán COMMANDS_1. Si CONDITION_2 se evalúa como False mientras que CONDITION_1 sigue siendo True, se ejecutarán COMMANDS_2. De lo contrario, se ejecuta COMMANDS_3.
Ejemplo:
Modifiquemos un poco el código de arriba para usar nested-if.
echo -n "Enter Number: " read x if [ $((x%2)) == 0 ]; then if [ $x == 0 ]; then echo "Number is Zero" else echo "Number is Even" fi else echo "Number is Odd" fi
Producción:
Algunas notas sobre la CONDICIÓN
Estas son algunas cosas a tener en cuenta al escribir las condiciones de prueba en bash.
1. Asegúrese de que haya espacios en blanco entre los corchetes y la declaración de verificación/comparación real.
Por ejemplo, lo siguiente no funcionará.
if [$x==0]
Bash informará un error sobre la falta de ] .
2. Siempre termine la línea antes de agregar una nueva palabra clave, como «entonces».
Si, entonces, else, elif y fi son todas palabras clave de shell, lo que significa que no se pueden usar en la misma línea. Poner un «;» entre la declaración anterior y la palabra clave, o comience una nueva línea con la palabra clave.
3. Para usar muchas condiciones en una declaración, use operadores lógicos.
Podemos usar operadores lógicos AND(&&) o lógicos OR(||) para usar múltiples condiciones.
Por ejemplo:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo "x is greatest" fi
Aquí, -ge es una abreviatura de mayor o igual que
Publicación traducida automáticamente
Artículo escrito por aayushmohansinha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA