Bash Scripting
Estructuras de control de flujo

Contenido

¿Qué son las estructuras de control de flujo?

Las estructuras de control de flujo en Bash scripting son herramientas que permiten controlar el flujo de ejecución de un programa, según ciertas condiciones o criterios definidos por el programador. Estas estructuras son fundamentales para crear programas más complejos y útiles en Bash.

En Bash, las estructuras de control de flujo más comunes son los condicionales if, else y elif. Estos condicionales permiten ejecutar un conjunto de instrucciones si se cumple una condición, y otro conjunto de instrucciones si la condición no se cumple.

Además, Bash también cuenta con estructuras de repetición como el bucle while y el bucle for, que permiten ejecutar un conjunto de instrucciones varias veces mientras se cumpla una condición o para un conjunto de valores.

En resumen, las estructuras de control de flujo son fundamentales para crear programas más complejos y útiles en Bash, permitiendo que los programas puedan tomar decisiones y ejecutar diferentes conjuntos de instrucciones según las condiciones establecidas.

Condicionales: if, else, elif

Los condicionales if, else y elif son estructuras de control de flujo en Bash Scripting que permiten a los programadores controlar el flujo de ejecución de un script de Bash en función de las condiciones especificadas.

Condicional If

El condicional «if» en Bash es una estructura de control de flujo que permite que un conjunto de instrucciones se ejecute si se cumple una determinada condición, y otro conjunto de instrucciones se ejecute si no se cumple.

– La sintaxis de la condición If 

				
					if [ condición ]
then
   # conjunto de instrucciones a ejecutar si se cumple la condición
fi

				
			

¿Qué son las estructuras de control de flujo?

Las estructuras de control de flujo en Bash scripting son herramientas que permiten controlar el flujo de ejecución de un programa, según ciertas condiciones o criterios definidos por el programador. Estas estructuras son fundamentales para crear programas más complejos y útiles en Bash.

En Bash, las estructuras de control de flujo más comunes son los condicionales if, else y elif. Estos condicionales permiten ejecutar un conjunto de instrucciones si se cumple una condición, y otro conjunto de instrucciones si la condición no se cumple.

Además, Bash también cuenta con estructuras de repetición como el bucle while y el bucle for, que permiten ejecutar un conjunto de instrucciones varias veces mientras se cumpla una condición o para un conjunto de valores.

En resumen, las estructuras de control de flujo son fundamentales para crear programas más complejos y útiles en Bash, permitiendo que los programas puedan tomar decisiones y ejecutar diferentes conjuntos de instrucciones según las condiciones establecidas.

Lectura recomendada

Link de Compra en Amazon: 
🛒 https://amzn.to/49RHDpK

Contenido del libro:

Al final de este libro podrá crear scripts de shell con facilidad.  Enseña cómo realizar tareas tediosas y repetitivas y convertirlas en programas que ahorran tiempo y simplifican su vida en sistemas Linux, Unix o MAC.

Link de Compra en Amazon: 
🛒 https://amzn.to/4iJpXR1

Contenido del libro:

Domina el arte de las secuencias de comandos bash ofensivas. ¡Esta guía es totalmente práctica y cubre cómo encadenar comandos, automatizar tareas, crear ataques y mucho más!

Condicionales: if, else, elif

Los condicionales if, else y elif son estructuras de control de flujo en Bash Scripting que permiten a los programadores controlar el flujo de ejecución de un script de Bash en función de las condiciones especificadas.

Condicional If

El condicional «if» en Bash es una estructura de control de flujo que permite que un conjunto de instrucciones se ejecute si se cumple una determinada condición, y otro conjunto de instrucciones se ejecute si no se cumple.

– La sintaxis de la condición If 

La condición se especifica dentro de corchetes «[ ]» y puede ser una comparación numérica, una comparación de cadenas de texto, una comprobación de archivo existente, entre otras. Si la condición se evalúa como verdadera, se ejecutará el conjunto de instrucciones que se encuentran entre la palabra clave «then» y «fi». Si la condición es falsa, no se ejecutará este conjunto de instrucciones.

– Ejemplo:

Por ejemplo, el siguiente código utiliza un condicional if para verificar si el número ingresado por el usuario es mayor o igual a 10:

				
					#!/bin/bash

echo "Ingrese un número: "
read num

if [ $num -ge 10 ]
then
   echo "El número ingresado es mayor o igual a 10"
fi

				
			

En este ejemplo, si el usuario ingresa un número igual o mayor a 10, se imprimirá el mensaje «El número ingresado es mayor o igual a 10». Si el número ingresado es menor que 10, no se ejecutará este conjunto de instrucciones.

En resumen, el condicional if es una estructura de control de flujo importante en Bash que permite tomar decisiones en un programa según una determinada condición.

Condicional Else

La condición «else» es una de las estructuras de control de flujo más utilizadas en Bash Scripting. Esta estructura se utiliza para ejecutar un bloque de código en caso de que la condición en un condicional «if» no se cumpla. En este artículo, se explicará cómo utilizar la condición «else» en Bash Scripting y se mostrarán algunos ejemplos prácticos.

– Sintaxis de la condición Else

La sintaxis de la condición «else» es muy sencilla. Después del bloque de código que se ejecutará si la condición del condicional «if» se cumple, se agrega la palabra «else», seguida de otro bloque de código que se ejecutará si la condición no se cumple. La sintaxis es la siguiente:

				
					if [condición]; then
   # bloque de código si la condición se cumple
else
   # bloque de código si la condición no se cumple
fi

				
			

– Ejemplo práctico

Veamos un ejemplo práctico para entender mejor la condición «else» en Bash Scripting. Supongamos que queremos imprimir un mensaje diferente dependiendo del valor de una variable «x». Si «x» es mayor o igual a 10, queremos imprimir «x es mayor o igual a 10», para ello utilizaremos la condición -ge (mayor o igual a), de lo contrario, queremos imprimir «x es menor que 10». Podemos lograr esto utilizando la siguiente estructura de control de flujo:

				
					#!/bin/bash

x=5

if [ $x -ge 10 ]; then #La condición -ge indica "mayor o igual a"
   echo "x es mayor o igual a 10"
else
   echo "x es menor que 10"
fi

				
			
  • Primero se define la variable «x» con un valor de 5.
  • Luego, se utiliza un condicional «if» para comprobar si «x» es mayor o igual a 10. Si esta condición es verdadera, se ejecuta el primer bloque de código, que imprime «x es mayor o igual a 10».
  • De lo contrario, se ejecuta el segundo bloque de código, que imprime «x es menor que 10».

 

Condicional Elif

La estructura condicional elif en Bash Scripting es una abreviatura de «else if». Se utiliza para añadir una nueva condición a una estructura condicional if y else. La estructura general de la condición elif es la siguiente:

				
					if [condición 1]; then
    # código a ejecutar si la condición 1 es verdadera
elif [condición 2]; then
    # código a ejecutar si la condición 2 es verdadera
else
    # código a ejecutar si todas las condiciones anteriores son falsas
fi

				
			

En la estructura condicional elif, se evalúa la condición 1 primero. Si la condición 1 es verdadera, se ejecuta el código correspondiente. Si la condición 1 es falsa, se evalúa la condición 2. Si la condición 2 es verdadera, se ejecuta el código correspondiente. Si la condición 2 es falsa, se ejecuta el código que se encuentra en la sección else.

Es importante tener en cuenta que se pueden tener múltiples estructuras condicionales elif dentro de una estructura if y else. Por ejemplo:

				
					if [condición 1]; then
    # código a ejecutar si la condición 1 es verdadera
elif [condición 2]; then
    # código a ejecutar si la condición 2 es verdadera
elif [condición 3]; then
    # código a ejecutar si la condición 3 es verdadera
else
    # código a ejecutar si todas las condiciones anteriores son falsas
fi

				
			

En resumen, la estructura condicional elif es una forma de añadir múltiples condiciones a una estructura condicional if y else. Es útil para evaluar múltiples opciones y tomar decisiones en consecuencia.

Ejercicio Nº 3: Lotería

Desarrolla un script en Bash que:

  1. Solicite al usuario ingresar un número del 1 al 20.
  2. Si el número ingresado es igual a 8, el script debe imprimir «Premio Gordo» en la consola.
  3. Si el número ingresado es igual a 3, el script debe imprimir «Segundo Premio» en la consola.
  4. En cualquier otro caso, el script debe imprimir «Sigue jugando» en la consola.
  5. Guarda el script en un archivo con extensión «.sh» y asegúrate de darle permisos de ejecución.

Cuando se ejecute el script, debería solicitar al usuario ingresar un número y mostrar el mensaje correspondiente según la condición cumplida.

<< Resolución >>

Operadores de Comparación

En Bash Scripting, los operadores de comparación son utilizados para comparar valores, variables y expresiones. Estos operadores son esenciales en la creación de estructuras de control de flujo condicionales, como el «if».

Los operadores de comparación se utilizan para realizar pruebas de igualdad, desigualdad, comparación numérica, comparación de cadenas de texto, y comprobación de archivos.

A continuación, se muestra una lista de los operadores de comparación más utilizados en Bash Scripting:

  • Comparación numérica: Se utiliza para comparar dos números. Algunos operadores de comparación numérica son:
    • -eq: Igual a
    • -ne: Distinto de
    • -gt: Mayor que
    • -lt: Menor que
    • -ge: Mayor o igual que
    • -le: Menor o igual que
  • Comparación de cadenas de texto: Se utiliza para comparar dos cadenas de texto. Algunos operadores de comparación de cadenas de texto son:
    • = : Igual a
    • !=: Distinto de
    • -z: Cadena vacía
    • -n: Cadena no vacía
  • Comprobación de archivos: Se utiliza para verificar si un archivo existe, si es un directorio, si tiene ciertos permisos, entre otros. Algunos operadores de comprobación de archivos son:
    • -e: Archivo existe
    • -d: Archivo es un directorio
    • -f: Archivo es un archivo regular
    • -r: Archivo tiene permisos de lectura
    • -w: Archivo tiene permisos de escritura
    • -x: Archivo tiene permisos de ejecución

Además, en Bash también se pueden utilizar operadores lógicos como && (and) y || (or) para combinar diferentes condiciones en un condicional «if».

Operaciones matemáticas

En Bash Scripting, es posible realizar operaciones matemáticas simples, como suma, resta, multiplicación y división, utilizando expresiones aritméticas. Estas expresiones pueden ser asignadas a variables o usadas directamente en el código.

La sintaxis para realizar operaciones aritméticas en Bash Scripting es la siguiente:

				
					$((operación))

				
			

Donde «operación» es la operación aritmética que se desea realizar. Por ejemplo:

				
					# Suma
resultado=$((2+2))
echo $resultado # Output: 4

# Resta
resultado=$((5-3))
echo $resultado # Output: 2

# Multiplicación
resultado=$((6*2))
echo $resultado # Output: 12

# División
resultado=$((10/2))
echo $resultado # Output: 5

				
			

También es posible realizar operaciones más complejas, utilizando variables y paréntesis para establecer el orden de las operaciones:

				
					# Operaciones con variables
numero1=5
numero2=3

# Suma con variables
resultado=$((numero1 + numero2))
echo $resultado # Output: 8

# Resta con variables y paréntesis para establecer el orden de las operaciones
resultado=$((numero1 - (numero2 * 2)))
echo $resultado # Output: -1

# División con variables y asignación del resultado a otra variable
resultado=$((numero1 / numero2))
resto=$((numero1 % numero2))
echo "Resultado: $resultado, Resto: $resto" # Output: Resultado: 1, Resto: 2

				
			

Es importante tener en cuenta que Bash Scripting solo maneja números enteros, por lo que la división entre dos números enteros dará como resultado otro número entero. Si se necesita realizar operaciones con números decimales, se puede utilizar un programa como bc, que permite realizar operaciones aritméticas con precisión arbitraria en Bash Scripting.

				
					# División con decimales utilizando bc
numero1=10
numero2=3
resultado=$(echo "scale=2;$numero1 / $numero2" | bc)
echo $resultado # Output: 3.33

				
			
  1. Se define la variable numero1 con un valor de 10.
  2. Se define la variable numero2 con un valor de 3.
  3. Se utiliza el comando echo para enviar una cadena de texto a la entrada del comando bc.
  4. La opción scale de bc establece el número de decimales que se utilizarán en la operación matemática. En este caso, se establece en 2.
  5. La operación matemática se realiza dividiendo el valor de numero1 por el valor de numero2. El resultado se almacena en la variable resultado.
  6. Se utiliza el comando echo para imprimir el valor de la variable resultado en la consola.

Por lo tanto, el script muestra el resultado de la división de 10 entre 3, con un máximo de dos decimales, que es 3.33.

 

Ejercicio Nº 4: Mayor o menor

Escribe un script de Bash que pida al usuario ingresar dos números y luego los compare para determinar cuál es mayor, cuál es menor o si son iguales. La respuesta del ejercicio debe ser el script Bash proporcionado que realiza la comparación de números.

<< Resolución >>

Ejercicio Nº 5: Par o Impar

Desarrolla un script en Bash para determinar si la suma de dos números es par o impar. Para lograr esto, el script debe seguir los siguientes pasos:

  1. Leer los dos números ingresados como argumentos.
  2. Sumar los dos números.
  3. Verificar si la suma es un número par o impar usando el operador módulo.
  4. Imprimir el resultado: «El número [suma] es un número par.» o «El número [suma] es un número impar.» según corresponda.

<< Resolución >>