Skip to content
This repository was archived by the owner on Feb 25, 2026. It is now read-only.

Latest commit

 

History

History
246 lines (176 loc) · 5.24 KB

File metadata and controls

246 lines (176 loc) · 5.24 KB

Funciones, Variables y Argumentos en Bash Script

Este documento explica como usar funciones, variables globales y locales, y argumentos.


Temario

Regresar a la guía principal


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_funcion

2. Parámetros en funciones

Los argumentos se manejan igual que en un script:

Variable Significado
$1 Primer argumento
$2 Segundo argumento
$@ Todos los argumentos
$# Cantidad de argumentos

Ejemplo:

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

saludar "Francisco" "Vélez"
# → Hola Francisco Vélez

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: 12

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"
cambiar
echo "Después: $mensaje"

Diferencias clave:

Tipo Alcance Vida útil
Global Todo el script Hasta que termina el script
Local Solo dentro de la función Se destruye al salir de la función

Usa local para evitar modificar variables globales sin querer.


5. Argumentos en scripts

Cuando ejecutas un script, puedes pasarle argumentos:

#!/bin/bash
echo "Hola $1"

Ejecución:

bash script.sh Francisco
# → Hola Francisco

Variables especiales:

Variable Significado
$0 Nombre del script
$1, $2... Argumentos individuales
$# Número de argumentos
$@ Todos los argumentos como lista
$* Todos los argumentos como una sola cadena

6. Validaciones útiles

Validar número de argumentos:

if [ $# -ne 2 ]; then
    echo "Uso: $0 num1 num2"
    exit 1
fi

Validar argumento vacío:

if [ -z "$1" ]; then
    echo "Error: falta argumento"
    exit 1
fi

Validar que sea un número:

if ! [[ "$1" =~ ^[0-9]+$ ]]; then
    echo "Error: $1 no es un número"
    exit 1
fi

7. Recorrer argumentos

Con for

for arg in "$@"; do
    echo "Argumento: $arg"
done

Con shift

shift elimina el primer argumento ($1) y mueve los demás a la izquierda.

while [ $# -gt 0 ]; do
    echo "Actual: $1"
    shift
done

shift 2 eliminaría los dos primeros argumentos de golpe.


8. Ejemplo práctico: mini calculadora

#!/bin/bash

sumar() { echo $(( $1 + $2 )); }
restar() { echo $(( $1 - $2 )); }

if [ $# -lt 3 ]; then
    echo "Uso: $0 [suma|resta] num1 num2"
    exit 1
fi

op=$1
shift

case $op in
  suma)  echo "Resultado: $(sumar $1 $2)" ;;
  resta) echo "Resultado: $(restar $1 $2)" ;;
  *)     echo "Operación inválida" ;;
esac

En resumen

Concepto Clave
Definir función nombre() { ... }
Llamar función nombre
Argumentos $1, $2, $@, $#
Devolver valor echo + $(comando)
Variable local local nombre=valor
Recorrer argumentos for arg in "$@" o while [ $# -gt 0 ]; do ...; shift; done

Regresar a la guía principal

Autor: Fravelz