🧠 Introducción a Bash

Bash es uno de los intérpretes de comandos más usados en sistemas Linux y Unix. Permite interactuar con el sistema operativo a través de comandos, automatizar tareas, y crear scripts potentes.

📚 ¿Qué es Bash?

Permite:

✅ Permiso de ejecución en Bash

Cuando creas un script, necesitas darle permiso de ejecución para poder correrlo directamente.

🔓 Dar permiso:

chmod +x script.sh

🚫 Sin permiso:

También puedes ejecutarlo sin permisos usando Bash directamente:

bash script.sh

⚙️ Shebang (#!/bin/bash)

El shebang es la primera línea de un script e indica qué intérprete usar:

#!/bin/bash

#!/bin/bash

📜 Variables en Bash

Las variables almacenan información temporal para usarla después.

#!/bin/bash

nombre="Unai"
echo "Hola $nombre"

🔢 Leer valores del usuario

#!/bin/bash

echo "Dime tu edad:"
read edad
echo "Tienes $edad años."

echo "Dime tu edad:" read edad echo "Tienes $edad años."

🧠 Condicionales en Bash

#!/bin/bash
 
if [ $edad -ge 18 ]; then
    echo "Eres mayor de edad"
else
    echo "Eres menor de edad"
fi

Operadores comunes:

Operador Significado
-eq Igual
-ne No igual
-lt Menor que
-le Menor o igual
-gt Mayor que
-ge Mayor o igual

Arrays

Los arrays permiten almacenar múltiples valores en una sola variable y acceder a ellos individualmente o en conjunto.

🧾 Declarar un Array

declare -a myArray=(1 2 3 4)echo ${myArray[@]}

declare -a indica que la variable es un array (aunque no es obligatorio, mejora la claridad).

📦 Mostrar todos los elementos

echo "${myArray[@]}"

[@] accede a todos los elementos del array
Salida:

🔁 Recorrer elementos línea por línea

for val in "${myArray[@]}"; do
  echo "$val"
done

Recorre y muestra cada elemento del array en una línea separada.

🔢 Acceder a un elemento específico

echo "${myArray[1]}"

Muestra el segundo elemento del array (los arrays en Bash comienzan en índice 0).

Salida:

🧮 Recorrer array con índice

declare -a myArray=(1 2 3 4)
declare -i posicion=0

for element in "${myArray[@]}"; do
    echo "[+] Elemento en la posición [$posicion]; $element"
    let posicion+=1
done

🧮 Contar elementos en un array

echo "Número de elementos: ${#myArray[@]}"

Salida:

${#array[@]} devuelve el número de elementos del array.

🎯 Último elemento del array

echo "Último elemento: ${myArray[-1]}"

⚠️ Esto no funciona en Bash tradicional. En Bash no se puede acceder con índices negativos por defecto.
Para obtener el último elemento puedes usar:

echo "${myArray[${#myArray[@]}-1]}"

🗑️ Eliminar elementos del array

unset myArray[0]

Elimina el primer elemento (índice 0). El índice queda vacío, pero no se reindexa automáticamente.

echo "${myArray[@]}"

🔁 Bucles en Bash

Bucle for

#!/bin/bash

for i in {1..5}
do
  echo "Número $i"
done

🔁 Bucle while

#!/bin/bash

contador=1
while [ $contador -le 5 ]
do
  echo "Contador: $contador"
  contador=$((contador + 1))
done

🧭 Condicional múltiple: case

#!/bin/bash
 
echo "Elige una opción (a/b/c):"
read opcion

case $opcion in
  a) echo "Elegiste A";;
  b) echo "Elegiste B";;
  c) echo "Elegiste C";;
  *) echo "Opción no válida";;
esac

🧰 Argumentos en scripts

Dentro de un script (script.sh):

#!/bin/bash

echo "Primer argumento: $1"
echo "Segundo argumento: $2"

Ejecutar:

bash script.sh valor1 valor2

📦 Funciones en Bash

Una función en Bash te permite agrupar comandos bajo un nombre, para reutilizarlos fácilmente.

✅ Sintaxis básica:

nombre_funcion() {
    # comandos aquí
}

🧪 Ejemplo completo:

#!/bin/bash

saludar() {
    echo "Hola, $1"
}

saludar "Unai"

🖥️ Script básico para saber tu IP

Una manera interesante de obtener tu dirección IP es creando un script básico en Bash. Este script te permitirá saber tu dirección IP local de forma sencilla y rápida sin tener que buscarla manualmente. Esto es útil si estás trabajando en un entorno de red y necesitas obtener tu IP frecuentemente, o si quieres automatizar este proceso.

#!/bin/bash

ip=$(ifconfig eth0 | grep "inet " | awk '{print $2}')
echo "Esta es tu IP: $ip"

📌 Notificaciones importantes:

📦 Manejo de la Interrupción (Ctrl+C) en Bash

En Bash, es posible manejar la interrupción de un script cuando el usuario presiona Ctrl+C. Esto se puede hacer utilizando la función trap, que captura señales del sistema (en este caso, la señal INT que se genera al presionar Ctrl+C), y ejecuta una acción definida cuando la señal es recibida.

🧩 Ejemplo: Función ctrl_c para manejar Ctrl+C

#!/bin/bash
# Ctrl+c

function ctrl_c(){
    echo -e "\n\n[!] Saliendo ... \n"
    exit 1
}

trap ctrl_c INT

sleep 10

🧠 Explicación del código:

  1. #!/bin/bash: Define el intérprete que se usará para ejecutar el script (Bash).

  2. function ctrl_c(){ ... }: Define una función llamada ctrl_c, que contiene los comandos a ejecutar cuando se reciba la señal INT (interrupción de Ctrl+C).

  3. echo -e "\n\n[!] Saliendo ... \n": Imprime un mensaje indicando que el script está siendo interrumpido. El -e en echo permite que se interpreten caracteres especiales como \n para saltos de línea.

  4. exit 1: Termina el script con un código de salida 1, que indica que el proceso se detuvo de manera controlada por una interrupción.

  5. trap ctrl_c INT: El comando trap captura la señal INT (la que se envía al presionar Ctrl+C) y ejecuta la función ctrl_c cuando esa señal es recibida.

  6. sleep 10: Hace que el script espere 10 segundos. Durante este tiempo, si el usuario presiona Ctrl+C, se ejecutará la función ctrl_c, mostrando el mensaje y deteniendo el script.

📌 ¿Por qué es útil este manejo?

Bibliografía