Introduction to Bash Scripting 06 - A Simple "If" Statement
Tabla de contenido:
ifdeclaraciónif..elseDeclaraciónif..elif..elseStatement- Anidado
ifdeclaraciones - Múltiples condiciones
- Operadores de prueba
- Conclusión
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:
-
-nVAR: verdadero si la longitud de VAR es mayor que cero.-zVAR: 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 INTEGER2verdadero es mayor que INTEGER2.INTEGER1 -lt INTEGER2: elINTEGER1 -lt INTEGER2verdadero es menor que INTEGER2.INTEGER1 -ge INTEGER2-INTEGER1 -ge INTEGER2verdadero es igual o mayor que INTEGER2.INTEGER1 -le INTEGER2-INTEGER1 -le INTEGER2verdadero es igual o menor que INTEGER2.-hFILE: verdadero si el ARCHIVO existe y es un enlace simbólico.-rFILE: verdadero si el ARCHIVO existe y es legible.-wFILE: verdadero si el ARCHIVO existe y se puede escribir.-xFILE: verdadero si el ARCHIVO existe y es ejecutable.-dFILE: verdadero si el ARCHIVO existe y es un directorio.-eFILE: verdadero si el ARCHIVO existe y es un archivo, independientemente del tipo (nodo, directorio, socket, etc.).-fFILE: 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.
Costos del proyecto SAP citados en la declaración de bancarrota de joyería
Una cadena de joyería de Colorado culpó en parte a un problemático proyecto SAP por su bancarrota del Capítulo 11.
Gartner solicita una Declaración de Derechos de Mantenimiento de TI
Gartner ha emitido un "código de conducta" para proveedores sobre contratos de mantenimiento de TI.
Declaración del caso Bash
Las declaraciones de caso Bash generalmente se usan para simplificar condicionales complejos cuando tiene múltiples opciones diferentes. El uso de declaraciones de casos en lugar de instrucciones anidadas de if le ayudará a hacer que sus scripts de bash sean más legibles y fáciles de mantener.







