Androide

Bash if..else declaración

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Tabla de contenido:

Anonim

La toma de decisiones es uno de los conceptos más fundamentales de la programación de computadoras. Al igual que en cualquier otro lenguaje de programación, if , if..elif..else , if..elif..else y if..elif..else if en Bash pueden usarse para ejecutar código en función de una determinada condición.

En este tutorial, lo guiaremos a través de los conceptos básicos de las declaraciones Bash if y le mostraremos cómo usarlas en sus scripts de shell.

if declaración

Bash if condicionales pueden tener diferentes formas. La declaración if más básica toma la siguiente forma:

if TEST-COMMAND then STATEMENTS fi

La instrucción if comienza con la palabra clave if seguida de la expresión condicional y la palabra clave then . La declaración termina con la palabra clave fi .

Si el TEST-COMMAND evalúa como True , las STATEMENTS se ejecutan. Si TEST-COMMAND devuelve False , no sucede nada, las STATEMENTS se ignoran.

En general, es una buena práctica siempre sangrar su código y separar los bloques de código con líneas en blanco. La mayoría de las personas optan por usar sangría de 4 espacios o de 2 espacios. Las sangrías y las líneas en blanco hacen que su código sea más legible y organizado.

Veamos el siguiente script de ejemplo que verifica si un número dado es mayor que 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Guarde el código en un archivo y ejecútelo desde la línea de comando:

bash test.sh

El script le pedirá que ingrese un número. Si, por ejemplo, ingresa 15, el comando de test se evaluará como true porque 15 es mayor que 10, y se ejecutará el comando echo dentro de la cláusula.

The variable is greater than 10.

if..else Declaración

La declaración Bash if..else toma la siguiente forma:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Si el TEST-COMMAND evalúa como True , se ejecutarán los STATEMENTS1 . De lo contrario, si TEST-COMMAND devuelve False , se ejecutará STATEMENTS2 . Solo puede tener una cláusula else en la declaración.

Agreguemos una cláusula else al script de ejemplo anterior:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Statement

La declaración Bash if..elif..else toma la siguiente forma:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Si TEST-COMMAND1 evalúa como True , se ejecutarán los STATEMENTS1 . Si TEST-COMMAND2 evalúa como True , se ejecutarán los STATEMENTS2 . Si ninguno de los comandos de prueba se evalúa como True , se ejecuta STATEMENTS2 .

Puede tener una o más cláusulas elif en la declaración. La cláusula else es opcional.

Las condiciones se evalúan secuencialmente. Una vez que una condición devuelve True las condiciones restantes no se realizan y el control del programa se mueve al final de las declaraciones if .

elif una cláusula elif al script anterior:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Anidado if declaraciones

Bash le permite anidar declaraciones if dentro de declaraciones if . Puede colocar una declaración if múltiple dentro de otra declaración if .

El siguiente script le pedirá que ingrese tres números e imprimirá el número más grande entre los tres números.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Así es como se verá la salida:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. En lugar de usar declaraciones if anidadas, generalmente es más eficiente usar la declaración case.

Múltiples condiciones

Los operadores lógicos OR y AND permiten usar múltiples condiciones en las declaraciones if .

Aquí hay otra versión del script para imprimir el número más grande entre los tres números. En esta versión, en lugar de las instrucciones anidadas if , usaremos el operador lógico AND ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Operadores de prueba

En Bash, el comando de test toma una de las siguientes formas de sintaxis:

test EXPRESSION]

Para negar la expresión de prueba, utilice el operador lógico NOT ( ! ). Al comparar cadenas, use siempre comillas simples o dobles para evitar problemas de división de palabras o problemas.

A continuación se presentan algunos de los operadores más utilizados:

  • -n VAR : verdadero si la longitud de VAR es mayor que cero. -z VAR : verdadero si el VAR está vacío. STRING1 = STRING2 - Verdadero [STRING1 y STRING2 son iguales. STRING1 != STRING2 - True STRING1 y STRING2 no son iguales. INTEGER1 -eq INTEGER2 : los INTEGER1 e INTEGER2 verdaderos son iguales. INTEGER1 -gt INTEGER2 - INTEGER1 -gt INTEGER2 verdadero es mayor que INTEGER2. INTEGER1 -lt INTEGER2 : el INTEGER1 -lt INTEGER2 verdadero es menor que INTEGER2. INTEGER1 -ge INTEGER2 - INTEGER1 -ge INTEGER2 verdadero es igual o mayor que INTEGER2. INTEGER1 -le INTEGER2 - INTEGER1 -le INTEGER2 verdadero es igual o menor que INTEGER2. -h FILE : verdadero si el ARCHIVO existe y es un enlace simbólico. -r FILE : verdadero si el ARCHIVO existe y es legible. -w FILE : verdadero si el ARCHIVO existe y se puede escribir. -x FILE : verdadero si el ARCHIVO existe y es ejecutable. -d FILE : verdadero si el ARCHIVO existe y es un directorio. -e FILE : verdadero si el ARCHIVO existe y es un archivo, independientemente del tipo (nodo, directorio, socket, etc.). -f FILE : verdadero si el ARCHIVO existe y es un archivo normal (no un directorio o dispositivo).

Conclusión

Las declaraciones if , if..elif..else e if..elif..else permiten controlar el flujo de la ejecución del script Bash mediante la evaluación de las condiciones dadas.

terminal de bash