Curso de Shell Scripting
Una función es un bloque de código con un nombre que puedes llamar varias veces dentro de tu script. Esto evita repetir código y hace que los scripts sean más fáciles de leer y mantener.
6.1. Declaración de funciones
Existen dos formas válidas en Bash:
1# Forma 1 (recomendada) 2saludar() { 3 echo "Hola mundo" 4} 5 6# Forma 2 7function saludar { 8 echo "Hola mundo" 9}
✅ La forma 1 es más estándar y funciona en Bash y otros shells modernos.
6.2. Llamar a una función
1saludar # Llama a la función
6.3. Parámetros en funciones
Puedes pasar argumentos a la función igual que a un script.
1saludar() { 2 echo "Hola, $1" 3 echo "Tu edad es $2" 4} 5 6saludar "Angel" 25
Salida:
Hola, Angel
Tu edad es 25
Variables especiales en funciones
$1,$2… → argumentos$#→ cantidad de argumentos$@→ todos los argumentos$?→ estado de salida del último comando
6.4. Variables locales
Para evitar que las variables de una función interfieran con el resto del script, usa local.
1incrementar() { 2 local x=$1 3 ((x++)) 4 echo $x 5} 6 7NUM=10 8echo "Antes: $NUM" 9NUM=$(incrementar "$NUM") 10echo "Después: $NUM"
Salida:
Antes: 10
Después: 11
6.5. Valores de retorno
Una función puede:
- Retornar un código de salida (
return N) → solo enteros (0 = éxito, ≠0 = error). - Imprimir un valor (con
echo) y capturarlo → más flexible.
Ejemplo con return:
1es_par() { 2 if (( $1 % 2 == 0 )); then 3 return 0 # éxito 4 else 5 return 1 # fallo 6 fi 7} 8 9if es_par 6; then 10 echo "Es par" 11else 12 echo "Es impar" 13fi
Salida:
Es par
Ejemplo con echo:
1sumar() { 2 echo $(( $1 + $2 )) 3} 4 5resultado=$(sumar 5 7) 6echo "La suma es $resultado"
Salida:
La suma es 12
6.6. Organización en múltiples archivos (modularización)
En proyectos grandes, conviene separar funciones en archivos y “cargarlos” cuando se necesiten usando source o ..
▸ Estructura de ejemplo
mi_proyecto/
├── bin/
│ └── main.sh
└── lib/
└── funciones.sh
▸ lib/funciones.sh
1#!/usr/bin/env bash 2 3saludar() { 4 echo "Hola, $1! Bienvenido al curso." 5} 6 7sumar() { 8 echo $(( $1 + $2 )) 9}
▸ bin/main.sh
1#!/usr/bin/env bash 2set -Eeuo pipefail 3 4# Importar funciones 5source "$(dirname "$0")/../lib/funciones.sh" 6 7saludar "Angel" 8 9resultado=$(sumar 5 8) 10echo "La suma es: $resultado"
▸ Ejecutar
1chmod +x bin/main.sh 2./bin/main.sh
Salida:
Hola, Angel! Bienvenido al curso.
La suma es: 13
6.7. Buenas prácticas con funciones
- ✅ Usa nombres descriptivos:
crear_backup,calcular_media - ✅ Declara variables internas como
local. - ✅ Haz que las funciones sean pequeñas y enfocadas.
- ✅ Documenta con comentarios sobre qué hace cada función.
- ✅ Evita usar
exitdentro de funciones (mejor retornar un código).
🏋️♂️ Ejercicio práctico 1
Crea un proyecto llamado calculadora con la siguiente estructura:
calculadora/
├── bin/
│ └── main.sh
└── lib/
└── operaciones.sh
El archivo operaciones.sh debe tener funciones para:
- sumar
- restar
- multiplicar
- dividir (usa
bc -lpara división decimal)
El main.sh debe:
- Mostrar un menú al usuario para elegir la operación.
- Pedir dos números.
- Llamar a la función correspondiente.
- Mostrar el resultado.
🏋️♂️ Ejercicio práctico 2
Crea un proyecto llamado gestion_usuarios con:
- Una función
agregar_usuarioque cree un archivo con el nombre del usuario. - Una función
listar_usuariosque muestre todos los archivos (usuarios). - Un menú interactivo que permita al usuario elegir entre agregar o listar.
- Loading...