27  Scripts en Bash

Fecha: 29 de septiembre, 2026

27.1 ¿Qué es un script de Bash?

Los scripts son archivos de texto que contienen instrucciones ejecutables por un intérprete de un lenguaje de programación para la ejecución de tareas. El formato .sh se utiliza para escribir scripts ejecutables por un intérprete como Bash.

En esta sección crearemos varios scripts de Bash y usaremos varios comandos y operadores.

NotaEstructura básica de un script

Los script de Bash contiene al inicio esta descripción #!bin/bash y la extensión .sh

#!/bin/bash
# Comentario: esto es un script básico

echo "Hola, mundo"

27.1.1 Componentes clave

Shebang (#!/bin/bash)

  • Primera línea del script
  • Indica al sistema que use Bash para ejecutar el archivo
  • Debe estar en la primera línea, sin espacios antes

Comentarios (#)

  • Líneas que comienzan con # son ignoradas
  • Útiles para documentar el código

Comandos

  • Instrucciones que se ejecutan línea por línea

27.1.2 Crear y ejecutar un script

# 1. Crear el archivo
nano mi_script.sh

# 2. Hacer el archivo ejecutable
chmod +x mi_script.sh

# 3. Ejecutar el script
./mi_script.sh

# O ejecutar sin permisos de ejecución
bash mi_script.sh
Importante

Al ejecutar el script con bash mi_script.sh, lo que pasa internamente es que: Bash abre y ejecuta el contenido del archivo; script.sh no necesita tener el permiso x (aunque sí debe ser legible para Bash).

Imagen creada con ChatGPT.

27.2 Variables en Bash

27.2.1 ¿Qué es una variable?

Un contenedor que almacena un valor (texto, números, etc.) que puede cambiar durante la ejecución del script.

27.2.2 Declaración y asignación

nombre="Juan"
edad=25
ciudad="Madrid"

Reglas importantes:

  • ✅ Sin espacios alrededor del =
  • ✅ Nombres en minúsculas (por convención)
  • ✅ Pueden contener letras, números y guiones bajos
  • ❌ No pueden comenzar con números

27.2.3 Acceder a variables

echo $nombre           # Imprime el valor
echo ${nombre}         # Forma alternativa (más segura)
echo "Hola, $nombre"   # Dentro de comillas dobles

27.2.4 Tipos de variables

Variables de cadena (string)

nombre="María"
mensaje="Bienvenido a Bash"

Variables numéricas

edad=30
cantidad=100

Variables vacías

variable=""

27.2.5 Comillas simples vs. dobles

nombre="Juan"
echo "Hola, $nombre"      # Hola, Juan (interpreta variables)
echo 'Hola, $nombre'      # Hola, $nombre (literal)

27.2.6 Variables especiales

$0      # Nombre del script
$1, $2  # Argumentos pasados al script
$#      # Número de argumentos
$?      # Código de salida del último comando
$$      # ID del proceso actual

Imagen creada con ChatGPT.

27.3 Nivel 1: Scripts básicos

27.3.1 Primer script

Archivo: saludo.sh

#!/bin/bash

echo "¡Bienvenido a Bash!"
echo "Este es mi primer script"

Ejecución:

chmod +x saludo.sh
./saludo.sh

Esperando una salida como esta:

¡Bienvenido a Bash!
Este es mi primer script

27.3.2 Script con variables simples

Archivo: presentacion.sh

#!/bin/bash

nombre="Carlos"
edad=28
ciudad="Barcelona"

echo "Mi nombre es $nombre"
echo "Tengo $edad años"
echo "Vivo en $ciudad"

Ejecución:

chmod +x presentacion.sh
./presentacion.sh

Esperando una salida como esta:

Mi nombre es Carlos
Tengo 28 años
Vivo en Barcelona

27.3.3 Concatenación de variables

Archivo: concatenar.sh

#!/bin/bash

nombre="Evelia"
apellido="Coss"
edad=32

echo "Nombre completo: $nombre $apellido"
echo "Información: $nombre tiene $edad años"

Ejecución:

chmod +x concatenar.sh
./concatenar.sh

Esperando una salida como esta:

Nombre completo: Evelia Coss
Información: Evelia tiene 32 años

27.4 Nivel 2: Entrada de datos

27.4.1 Leer entrada del usuario

Archivo: leer_entrada.sh

#!/bin/bash

echo "¿Cuál es tu nombre?"
read nombre

echo "¿Cuál es tu edad?"
read edad

echo "Hola $nombre, tienes $edad años"

Ejecución:

chmod +x leer_entrada.sh
./leer_entrada.sh

Esperando una salida como esta:

¿Cuál es tu nombre? # Te va a preguntar 
Evelia
¿Cuál es tu edad?  # Te va a preguntar 
32
Hola Evelia, tienes 32 años

27.4.2 Múltiples variables con read

Archivo: datos_personales.sh

#!/bin/bash

echo "Ingresa tu nombre, edad y ciudad (separados por espacio):"
read nombre edad ciudad

echo "Datos ingresados:"
echo "Nombre: $nombre"
echo "Edad: $edad"
echo "Ciudad: $ciudad"

Ejecución:

chmod +x datos_personales.sh
./datos_personales.sh

Esperando una salida como esta:

Ingresa tu nombre, edad y ciudad (separados por espacio):
Evelia 32 Queretaro
Datos ingresados:
Nombre: Evelia
Edad: 32
Ciudad: Queretaro

27.4.3 Leer con mensaje personalizado

Archivo: leer_con_prompt.sh

#!/bin/bash

read -p "¿Cuál es tu nombre? " nombre
read -p "¿Cuál es tu email? " email

echo "Nombre: $nombre"
echo "Email: $email"

Ejecución:

chmod +x leer_con_prompt.sh
./leer_con_prompt.sh

Esperando una salida como esta:

¿Cuál es tu nombre? Evelia
¿Cuál es tu email? ecossnav@gmail.com
Nombre: Evelia
Email: ecossnav@gmail.com

27.5 Nivel 3: Argumentos del script

27.5.1 Usar argumentos

Archivo: argumentos.sh

#!/bin/bash

echo "Primer argumento: $1"
echo "Segundo argumento: $2"
echo "Tercer argumento: $3"
echo "Total de argumentos: $#"

Ejecución:

chmod +x argumentos.sh
./argumentos.sh Juan 25 Madrid

Esperando una salida como esta:

Primer argumento: Juan
Segundo argumento: 25
Tercer argumento: Madrid
Total de argumentos: 3

27.5.2 Script con argumentos obligatorios

Importante

Dobles paréntesis (( )) indican que lo que está dentro es una expresión aritmética.

Archivo: sumar_argumentos.sh

#!/bin/bash

num1=$1
num2=$2

suma=$((num1 + num2))

echo "$num1 + $num2 = $suma"

Ejecución:

chmod +x sumar_argumentos.sh
./sumar_argumentos.sh 10 20

Esperando una salida como esta:

10 + 20 = 30

27.6 Nivel 4: Operaciones con variables

27.6.1 Operaciones aritméticas

Archivo: operaciones.sh

#!/bin/bash

a=10
b=5

suma=$((a + b))
resta=$((a - b))
multiplicacion=$((a * b))
division=$((a / b))

echo "Suma: $suma"
echo "Resta: $resta"
echo "Multiplicación: $multiplicacion"
echo "División: $division"

Ejecución:

chmod +x operaciones.sh
./operaciones.sh

Esperando una salida como esta:

Suma: 15
Resta: 5
Multiplicación: 50
División: 2

27.6.2 Incremento y decremento

Archivo: incremento.sh

#!/bin/bash

contador=0

echo "Contador inicial: $contador"

contador=$((contador + 1))
echo "Después de incrementar: $contador"

contador=$((contador - 1))
echo "Después de decrementar: $contador"

Ejecución:

chmod +x incremento.sh
./incremento.sh

Esperando una salida como esta:

Después de incrementar: 1
Después de decrementar: 0

27.6.3 Longitud de una cadena

Archivo: longitud.sh

#!/bin/bash

texto="Hola Bash"
longitud=${#texto} # obtener la cantidad de caracteres que tiene una variable

echo "Texto: $texto"
echo "Longitud: $longitud caracteres"

Ejecución:

chmod +x longitud.sh
./longitud.sh

Esperando una salida como esta:

Texto: Hola Bash
Longitud: 9 caracteres

27.7 Nivel 5. Variables de entorno

27.7.1 Usar variables de entorno

Archivo: variables_entorno.sh

#!/bin/bash

echo "Usuario actual: $USER"
echo "Directorio home: $HOME"
echo "Directorio actual: $PWD"
echo "Sistema operativo: $OSTYPE"

Ejecución:

chmod +x variables_entorno.sh
./variables_entorno.sh

Esperando una salida como esta:

Usuario actual: ecoss
Directorio home: /Users/ecoss
Directorio actual: /Users/ecoss/Documents/Mt_TallerComputo_ClaseBash
Sistema operativo: darwin25

27.7.2 Crear y usar variables de entorno

Archivo: crear_entorno.sh

#!/bin/bash

export MI_VARIABLE="Valor importante"

echo "Mi variable: $MI_VARIABLE"

Ejecución:

chmod +x crear_entorno.sh
./crear_entorno.sh

Esperando una salida como esta:

Mi variable: Valor importante

27.8 Material suplementario