Funciones
Funciones, Variables y Argumentos en Bash Script
Section titled “Funciones, Variables y Argumentos en Bash Script”Este documento explica como usar funciones, variables globales y locales, y argumentos.
1. Definición de funciones
Section titled “1. Definición de funciones”En Bash, una función agrupa comandos que puedes reutilizar. Existen dos formas equivalentes:
# Forma 1 (más común)mi_funcion() {echo "Hola desde la función"
# Forma 2 (menos usada)function mi_funcion2 }echo "Hola desde la función 2"Llamar una función:
mi_funcion2. Parámetros en funciones
Section titled “2. Parámetros en funciones”Los argumentos se manejan igual que en un script:
Ejemplo:
saludar() {echo "Hola $1 $2"
saludar "Francisco" "Vélez"# → Hola Francisco Vélez3. Devolver valores
Section titled “3. Devolver valores”En Bash, return solo devuelve códigos de salida (= éxito, ≠0 = error). Para devolver datos reales se usa echo y captura de comandos:
sumar() {echo $(( $1 + $2 ))
resultado=$(sumar 5 7)echo "La suma es: $resultado"# → La suma es: 124. Variables Globales y Locales
Section titled “4. Variables Globales y Locales”Por defecto, todas las variables son globales. Para que existan solo dentro de la función, usa local.
mensaje="Hola mundo"
cambiar() {local mensaje="Soy local"echo "Dentro: $mensaje"
echo "Antes: $mensaje"cambiarecho "Después: $mensaje"Diferencias clave:
Usa local para evitar modificar variables globales sin querer.
5. Argumentos en scripts
Section titled “5. Argumentos en scripts”Cuando ejecutas un script, puedes pasarle argumentos:
#!/bin/bashecho "Hola $1"Ejecución:
bash script.sh Francisco# → Hola FranciscoVariables especiales:
6. Validaciones útiles
Section titled “6. Validaciones útiles”Validar número de argumentos:
if [ $# -ne 2 ]; thenecho "Uso: $0 num1 num2"exit 1fiValidar argumento vacío:
if [ -z "$1" ]; thenecho "Error: falta argumento"exit 1fiValidar que sea un número:
if ! [[ "$1" =~ ^[0-9]+$ ]]; thenecho "Error: $1 no es un número"exit 1fi7. Recorrer argumentos
Section titled “7. Recorrer argumentos”Con for
Section titled “Con for”for arg in "$@"; doecho "Argumento: $arg"doneCon shift
Section titled “Con shift”shift elimina el primer argumento ($1) y mueve los demás a la izquierda.
while [ $# -gt 0 ]; doecho "Actual: $1"shiftdoneshift 2 eliminaría los dos primeros argumentos de golpe.
8. Ejemplo práctico: mini calculadora
Section titled “8. Ejemplo práctico: mini calculadora”#!/bin/bash
sumar() { echo $(( $1 + $2 )); }restar() { echo $(( $1 - $2 )); }
if [ $# -lt 3 ]; thenecho "Uso: $0 [suma|resta] num1 num2"exit 1fi
op=$1shift
case $op insuma) echo "Resultado: $(sumar $1 $2)" ;;resta) echo "Resultado: $(restar $1 $2)" ;;*) echo "Operación inválida" ;;esac