Ejemplo de Bash If-Then-Else

Bash If Then Else Example



En esta lección, veremos cómo podemos usar declaraciones If-Then-Else en los scripts del entorno Bash que escribimos. Las declaraciones If-Then-Else son una herramienta útil para proporcionar una forma de definir la ruta de acción de un script cuando se cumplen algunas condiciones. Veamos cuál es la sintaxis de las declaraciones If-Then-Else:

siALGUNOS COMANDOS;
luegoENTONCES-MANDOS;
demásELSE-COMMANDS;
ser

En el comando anterior que se muestra, si se encuentra que SOME-COMMANDS es verdadero o su estado de retorno es 0, se ejecutarán THEN-COMMANDS. Si este no es el caso, se ejecutan ELSE-COMMANDS. En SOME-COMMANDS, generalmente hacemos una comparación de cadenas o una comparación de valores en forma de números enteros. También podemos hacer muchas operaciones que involucran archivos. Veamos algunos ejemplos de comandos primarios que se utilizan principalmente cuando se trabaja con condiciones basadas en archivos:







Primario Sentido
[ -a ] Devuelve verdadero cuando existe ARCHIVO.
[ -b ] Devuelve verdadero cuando FILE existe y es un archivo especial de bloque.
[ -c ] Devuelve verdadero cuando FILE existe y es un archivo especial de caracteres.
[ -D ] Devuelve verdadero cuando FILE existe y es un directorio.
[ -Y ] Devuelve verdadero cuando existe ARCHIVO.
[-f] Devuelve verdadero cuando FILE existe y es un archivo normal.
[-g] Devuelve verdadero cuando FILE existe y su bit SGID está establecido.
[-h] Devuelve verdadero cuando FILE existe y es un enlace simbólico.
[-k] Devuelve verdadero cuando el ARCHIVO existe y su bit adhesivo está establecido.
[ -pag ] Devuelve verdadero cuando FILE existe y es una tubería con nombre (FIFO).
[-r] Devuelve verdadero cuando el ARCHIVO existe y es legible.
[ -s ] Devuelve verdadero cuando FILE existe y tiene un tamaño mayor que cero.
[-t] Devuelve verdadero cuando el descriptor de archivo FD está abierto y se refiere a una terminal.
[-u] Devuelve verdadero cuando FILE existe y su bit SUID (establecer ID de usuario) está establecido.
[ -en ] Devuelve verdadero cuando FILE existe y se puede escribir.
[ -x ] Devuelve verdadero cuando FILE existe y es ejecutable.
[ -O ] Devuelve verdadero cuando FILE existe y es propiedad del ID de usuario efectivo.
[-G] Devuelve verdadero cuando el ARCHIVO existe y es propiedad del ID de grupo efectivo.
[ -LOS ] Devuelve verdadero cuando FILE existe y es un enlace simbólico.
[-N] Devuelve verdadero cuando FILE existe y se ha modificado desde que se leyó por última vez.
[ -S ] Devuelve verdadero cuando FILE existe y es un socket.

THEN-COMMANDS y ELSE-COMMANDS pueden ser cualquier operación UNIX válida o cualquier programa ejecutable. Tenga en cuenta que el luego y ser Los comandos están separados por punto y coma, ya que se consideran elementos completamente separados de un script.



Ejemplo simple If-Then-Else

Comencemos nuestra lección con un ejemplo muy simple con declaraciones If-Then-Else.
Aquí hay un programa de muestra:



Si Ejemplo

Si Ejemplo





Aquí está la salida que vemos cuando ejecutamos nuestro script:

$ . ifelse1.sh
Los valores son los mismos!
$

Usar argumentos de línea de comandos

También podemos usar argumentos de línea de comandos en nuestros scripts y usar el número de argumentos y los valores en sí como una condición en la declaración IF que definimos. Primero definimos un archivo de texto con el siguiente contenido:



Mi nombre es LinuxHint. Me encantan los servidores, especialmente los de Ubuntu. Ellos son tan
terminalish!

Ahora, podemos escribir un script que encuentre si una palabra aparece en un archivo de texto o no. Definamos el guión ahora:

echo 'Encontrar $ 1 en $ 2'
sujeción $1 $2
si [ $? -Nació 0 ]
luego
echo '$ 1 no encontrado en el archivo $ 2.'
demás
echo '$ 1 encontrado en el archivo $ 2.'
ser
echo 'Guión completado'.

Este guión es muy dinámico. Considera la palabra a buscar y el archivo a buscar desde la propia línea de comandos. Ahora, estamos listos para ejecutar nuestro script:

. ifelse2.sh amor hola.txt

Veremos una salida como:

Encontrar el amorenhola.txt
amor encontradoen expedientehola.txt.
Guión completado.

Comprobando el número de argumentos de la línea de comandos

Dentro de una declaración IF, incluso podemos verificar cuántos argumentos de la línea de comandos se pasaron al comando para que podamos actuar sobre lo mismo:

contar=$#
si [ ! $ count -gt 1 ]
luego
echo 'No hay suficientes argumentos'
demás
echo '¡Buen trabajo!'
ser

Ejecutemos este script ahora, veremos el siguiente resultado:

Argumentos de la línea de comandos

Argumentos de la línea de comandos

Declaraciones If-Then-Elif-Else

También podemos tener múltiples declaraciones IF en el mismo bloque para reducir la ruta de decisión que toma nuestro programa para ejecutar los comandos que definimos. Aquí está la sintaxis para definir múltiples declaraciones IF en nuestros scripts:

siCOMANDOS DE PRUEBA;
luego
COMANDOS DE RESULTADOS;
elif
OTROS COMANDOS;
luego
OTROS COMANDOS DE RESULTADO;
demás
COMANDOS ALTERNOS;
ser

Sin embargo, esto parece bastante familiar y fácil de seguir. Definamos un ejemplo sencillo para establecer cómo funciona el árbol:

contar=$#
si [ $ count -eq 1 ]
luego
echo 'Sólo se ha encontrado un argumento'.
elif [ $ count -eq 2 ]
luego
echo Mejor, dos argumentos encontrados.
demás
echo '¡Buen trabajo, muchos argumentos encontrados!'
ser

Esto es lo que obtenemos con este comando:

Ejemplo de If Then Elif Else

Ejemplo de If Then Elif Else

Usar declaraciones de casos

Las declaraciones IF-ELSE son útiles cuando tiene una gran lista de opciones sobre las que debe decidir. Pero en caso de que desee realizar una acción solo en unos pocos casos de coincidencia exacta con el resultado, también podemos usar declaraciones CASE en scripts Bash. Su sintaxis se parece a:

casoEXPRESIÓNenCASO 1)MANDOS PARA EJECUTAR;
CASO2)MANDOS PARA EJECUTAR;
CASO2)MANDOS PARA EJECUTAR;
...)MANDOS PARA EJECUTAR;
*)MANDOS PARA EJECUTAR;
esac

El último caso con * actúa como el caso predeterminado y se ejecutará cuando ninguno de los casos definidos anteriormente coincida.

Construyamos rápidamente un ejemplo simple usando las declaraciones CASE:

caso '$1' en
1)
echo 'El valor es 1.'
;;
2)
echo 'El valor es 2.'
;;
3)
echo 'El valor es 3.'
;;
*)
echo 'Otro valor pasado.'
esac

Cada instrucción CASE termina con ;; (doble punto y coma). Esto es lo que obtenemos con este comando:

Ejemplo de CASO

Ejemplo de CASO

Conclusión

En esta lección, analizamos cómo podemos usar las declaraciones IF-ELSE, IF-THEN-ELIF y CASE en los scripts Bash que definimos para tomar acciones específicas sobre la base de valores que existen en nuestros programas o pasados ​​por el usuario usando posicional parámetros.