50% de descuento en todos los planes, por tiempo limitado. Desde $2.48/mo
11 min restantes
Servidores y SO

Funciones en Bash: sintaxis, ejemplos y casos de uso

Kelly Watson By Kelly Watson 11 min de lectura Actualizado el 14 dic 2025
Ilustración 3D abstracta de bloques de código azul luminoso que se ensamblan en una estructura modular, representando funciones Bash

Las funciones de Bash agrupan comandos relacionados bajo un mismo nombre. Al llamar a ese nombre, se ejecuta el bloque completo. Puedes pasar argumentos para personalizar el comportamiento y devolver valores para comunicar resultados. Esto mantiene tu código limpio y fácil de mantener.

Linux domina los entornos de servidor a nivel mundial, por lo que dominar las funciones de Bash es más importante que nunca. Las funciones convierten scripts desordenados en automatización limpia y reutilizable.

Esta guía te lleva desde la sintaxis básica hasta los casos de uso avanzados. Aprenderás a declarar funciones, pasar parámetros, gestionar valores de retorno y verás diez ejemplos prácticos que puedes usar en tus propios scripts.

Resumen rápido

  • Las funciones de Bash son bloques de código con nombre que puedes reutilizar en tus scripts
  • Define las funciones con la sintaxis function_name() { commands; } sintaxis
  • Pasa argumentos usando $1, $2, $3 parámetros posicionales
  • Las funciones mejoran la legibilidad, la modularidad y el mantenimiento del código
  • Usa return para salir de las funciones e indicar códigos de estado (0 = éxito, valor distinto de cero = error)
  • Las funciones se pueden compartir entre scripts usando source or export -f
  • Los ejemplos prácticos incluyen copia de seguridad de archivos, monitorización del disco, validación de entradas y comprobación de servicios

¿Qué es Bash scripting?

Ilustración 3D de un pergamino digital con código Bash luminoso que se escribe a sí mismo, representando la automatización mediante Bash scripting.

Bash scripting es un método de automatización de tareas mediante el shell Bash. Es la interfaz de línea de comandos predeterminada en Linux y sigue siendo una herramienta estándar en macOS. Un script de Bash es un programa escrito en el lenguaje de Bash scripting, que puede ejecutarse en un terminal o como archivo de script independiente.

Con el uso de escritorio de Linux en constante crecimiento y el sistema operativo dominando los entornos de servidor en todo el mundo, el dominio de Bash scripting se ha vuelto valioso para los profesionales de TI. El lenguaje se integra bien con herramientas DevOps como Docker, Kubernetes y pipelines de CI/CD.

Bash scripting te permite realizar tareas que van desde comandos simples hasta automatización compleja y administración de sistemas. Puedes automatizar tareas repetitivas, desarrollar scripts de mantenimiento, construir pipelines de despliegue, gestionar sistemas de software y manipular datos.

¿Qué es una función de Bash?

Ilustración digital futurista que muestra datos de línea de comandos desordenados siendo organizados por una puerta de procesamiento luminosa, simbolizando el funcionamiento de una función de Bash, con espacio vacío a la izquierda.

Una función de Bash puede definirse como un conjunto de comandos que se declaran dentro de un script de Bash o de forma interactiva en el prompt de comandos, según el caso de uso. Una vez definida, una función de Bash puede invocarse múltiples veces dentro del script o en otros scripts, igual que cualquier comando del shell.

Las funciones de Bash permiten crear bloques de código reutilizables capaces de realizar operaciones complejas, organizar el código y simplificar los scripts. Puedes pasar argumentos a una función de Bash y usarlos dentro de ella para ejecutar operaciones. Las funciones de Bash devuelven valores que puedes utilizar en otras partes de tu script.

Cubriremos varios estilos de implementación concretos, entre ellos simple_function para lógica básica, simple_inputs para el manejo de argumentos, y estructuras avanzadas como fibonnaci_recursion.

Fundamentos de las funciones de Bash son aspectos clave para cualquier administrador de sistemas o ingeniero DevOps que trabaje con automatización. Las secciones siguientes describen cada uno de estos tipos en detalle.

¿Por qué usar funciones de Bash?

Engranaje azul brillante con símbolos de optimización impulsando una máquina de código, que representa la eficiencia y velocidad que aportan las funciones de Bash.

Ahora que ya hemos definido qué son las funciones de Bash, veamos sus principales ventajas. Esta sección te ayuda a entender en qué situaciones son más útiles.

Reutilización

Una función de Bash bien escrita es una herramienta que puedes aprovechar una y otra vez. Escribe el bloque de código una vez y reutilízalo tantas veces como necesites, dentro del mismo script o en otros.

Esto hace tu código más eficiente y te ahorra tiempo al eliminar duplicidades. Mantener el código también es más sencillo: si necesitas hacer un cambio, solo tienes que modificar la función en un único lugar.

Legibilidad

Los scripts complejos pueden ser difíciles de interpretar. Las funciones de Bash resuelven esto dividiendo el script en partes más pequeñas y manejables.

Cada función tiene un propósito concreto y un nombre descriptivo que explica su cometido. Esto facilita que tú y otros puedan entender y mantener el código.

Modularidad

Las funciones organizan tu código. Puedes dividir la lógica en módulos más pequeños, lo que mantiene la estructura del script limpia y fácil de gestionar.

Si necesitas añadir una nueva funcionalidad, puedes hacerlo sin tocar el resto del script. Del mismo modo, cuando tengas que eliminar o modificar algo, el resto del código permanece intacto.

Parámetros de las funciones de Bash

Puedes pasar argumentos, o parámetros, a tus funciones. Estos argumentos permiten que las funciones se adapten y ejecuten distintas acciones según la entrada que reciban.

Esto abre muchas posibilidades a la vez que hace tus funciones más versátiles y adaptables. En lugar de escribir código similar varias veces, escribes una sola función que gestiona distintas entradas.

¿Cómo y dónde usar las funciones de Bash?

Diagrama de flujo 3D en cristal que muestra la ejecución de un script bifurcándose en un bloque de función y retornando, y que ilustra cómo se usan las funciones de Bash en el flujo lógico.

Entremos ahora en lo técnico y veamos un ejemplo breve de cómo crear funciones de Bash. La siguiente sintaxis puede usarse en entornos basados en Unix. Si trabajas en Windows, puedes instalar Linux Bash en Windows 10 para seguir estos ejemplos.

Crear una función de Bash

Usa la siguiente estructura de comando:

function_name () {

    # los comandos van aquí

}

 

Una vez que hayas creado la función, puedes usarla en tu código cuando quieras. Aquí tienes un ejemplo funcional:

greet () {

    echo "Hello, $1!"

}

 

Llama a esta función con Saludar al mundo para obtener la salida "Hello, World!". El $1 representa el primer argumento que se pasa a la función.

Aquí tienes algunos ejemplos prácticos que puedes usar en tus propios scripts:

# Crea una copia de seguridad de cualquier archivo

backup_file () {

    cp "$1" "$1.bak"

    echo "Backup created: $1.bak"

}

 

# Check if a directory exists, create if it doesn't

ensure_dir () {

    if [ ! -d "$1" ]; then

        mkdir -p "$1"

        echo "Created directory: $1"

    fi

}

 

# Registrar mensajes con marcas de tiempo

log_message () {

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"

}

 

Defines estas funciones de Bash personalizadas una sola vez y las llamas cuando las necesitas a lo largo de tu script.

Sintaxis esencial de funciones

Las funciones se comportan como mini-scripts dentro de tu script principal, pero comparten la memoria del shell. Ten en cuenta estos tres comportamientos específicos al escribirlas.

Ámbito de variables (local vs. global)

Las variables dentro de las funciones son globales por defecto. Si defines my_var="test" dentro de una función, sobreescribe cualquier my_var existente en tu script. Usa siempre local para limitar las variables al ámbito de la función y evitar efectos secundarios:

local my_var="value"

Parámetros posicionales

Las funciones leen sus argumentos con las mismas $1, $2, y $@ variables que los scripts. Son locales a la función y se reinician cuando esta termina. Los argumentos originales del script no son accesibles dentro de la función a menos que los pases explícitamente.

Valores de retorno

Las funciones de Bash no devuelven datos como las funciones de Python o JavaScript. El comando return solo establece un código de salida (0-255) para indicar éxito o error. Para devolver datos reales (como una cadena de texto o un cálculo), usa echo con el resultado y captúralo al llamar a la función:

result=$(my_function)

10 ejemplos prácticos de funciones en Bash

Ahora que entiendes cómo funcionan las funciones en Bash y cómo crearlas, aquí tienes diez ejemplos prácticos que puedes añadir a tus scripts. Cada función resuelve un problema habitual y muestra una estructura correcta, con argumentos y valores de retorno.

1. Función de copia de seguridad de archivos

Crea una copia de seguridad con marca de tiempo de cualquier archivo:

backup_file () {

    local file="$1"

    local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"

    

    if [ -f "$file" ]; then

        cp "$file" "$backup"

        echo "Backup created: $backup"

        return 0

    else

        echo "Error: File not found"

        return 1

    fi

}

 

Uso: backup_file /etc/nginx/nginx.conf

2. Comprobador de directorios

Comprueba si un directorio existe y lo crea si es necesario:

ensure_dir () {

    local dir="$1"

    

    if [ ! -d "$dir" ]; then

        mkdir -p "$dir"

        echo "Created: $dir"

    fi

}

 

Uso: ensure_dir /var/log/myapp

3. Logger con marca de tiempo

Añade marcas de tiempo a los mensajes de log para depuración:

log_message () {

    local level="$1"

    local message="$2"

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"

}

 

Uso: log_message "INFO" "Script started"

4. Monitor de espacio en disco

Comprueba el uso del disco y avisa si supera un umbral:

check_disk_space () {

    local threshold="${1:-80}"

    local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')

    

    if [ "$usage" -gt "$threshold" ]; then

        echo "Warning: Disk usage at ${usage}%"

        return 1

    fi

    return 0

}

 

Uso: check_disk_space 90

5. Validador de entrada

Valida que la entrada del usuario no esté vacía:

validate_input () {

    local input="$1"

    local name="$2"

    

    if [ -z "$input" ]; then

        echo "Error: $name cannot be empty"

        return 1

    fi

    return 0

}

 

Uso: validate_input "$username" "Username"

6. Verificador de estado de servicios

Comprueba si un servicio está en ejecución e informa del estado:

check_service () {

    local service="$1"

    

    if systemctl is-active --quiet "$service"; then

        echo "$service is running"

        return 0

    else

        echo "$service is not running"

        return 1

    fi

}

 

Uso: check_service nginx

7. Extractor de extensiones de archivo

Extrae la extensión de un nombre de archivo:

get_extension () {

    local filename="$1"

    echo "${filename##*.}"

}

 

Uso: ext=$(get_extension "document.pdf")

8. Cortadora de Césped de Cuerda

Elimina los espacios en blanco al inicio y al final de una cadena:

trim_string () {

    local str="$1"

    str="${str#"${str%%[![:space:]]*}"}"

    str="${str%"${str##*[![:space:]]}"}"

    echo "$str"

}

 

Uso: clean=$(trim_string " hello world ")

9. Archivador de archivos seguro

Mueve un archivo a un directorio personalizado $HOME/.trash en lugar de eliminarlo de forma permanente. Añade una marca de tiempo al nombre del archivo para evitar sobrescribir copias de seguridad anteriores.

safe_remove() {

    local file="$1"

    local trash="$HOME/.trash"

    # Añadir marca de tiempo para evitar sobrescribir archivos existentes

    local new_name="$(basename "$file")_$(date +%s)"

    

    mkdir -p "$trash"

 

    if [ -e "$file" ]; then

        mv "$file" "$trash/$new_name"

        echo "Movido al archivo: $file -> $trash/$new_name"

    else

        echo "Error: $file no encontrado"

        return 1

    fi

}

 

Uso: safe_remove old_script.sh

 

10. Informador de estado

Muestra el mecanismo de retorno de funciones en Bash para el manejo de errores. El valor de retorno de una función Bash indica éxito (0) o fallo (distinto de cero):

process_data () {

    local file="$1"

    

    if [ ! -f "$file" ]; then

        return 1

    fi

    

    # Procesar el archivo

    cat "$file" | wc -l

    return 0

}

 

# Comprobar el valor de retorno

process_data "data.txt"

if [ $? -eq 0 ]; then

    echo "Procesamiento completado"

else

    echo "Error en el procesamiento"

fi

 

El $? La variable captura el estado de salida del último comando o llamada a función.

Función Propósito Característica clave
backup_file Crear copias de seguridad de archivos Nombres con marca de tiempo
ensure_dir Gestión de directorios Los crea si no existen
log_message Registro de eventos Prefijo de marca de tiempo
check_disk_space Monitorización del sistema Alertas por umbral
validate_input Validación de entrada Comprobación de cadena vacía
check_service Monitorización de servicios Integración con Systemd
get_extension Análisis de cadenas Expansión de parámetros
trim_string Limpieza de cadenas Eliminación de espacios en blanco
safe_remove Eliminación segura Directorio de papelera
process_data Gestión de errores Valores de retorno

Ejecutar funciones Bash en un VPS

Las funciones Bash alcanzan todo su potencial cuando se ejecutan en un entorno de servidor dedicado. Nuestro Linux VPS te da acceso root completo para personalizar tu entorno de shell, crear bibliotecas de funciones a nivel de sistema y automatizar tareas de administración del servidor sin restricciones.

Con un VPS, puedes almacenar funciones reutilizables en /etc/profile.d/ para todos los usuarios, programar scripts basados en funciones mediante cron jobs y construir pipelines de automatización para el despliegue y el mantenimiento. Ofrecemos servidores en 12 ubicaciones en todo el mundo, con velocidades de red de hasta 40 Gbps y memoria DDR5, lo que se traduce en una ejecución de scripts más rápida y un procesamiento de datos más fluido.

Este nivel de control hace que un VPS sea la opción ideal para cualquiera que trabaje en serio con scripting de shell y automatización de sistemas.

Conclusión

Las funciones Bash son clave para crear scripts modulares y reutilizables. Permiten agrupar comandos relacionados y encapsular lógica compleja para que el código sea más fácil de leer y mantener. Tanto si gestionas infraestructura en la nube, como si automatizas pipelines de despliegue o realizas tareas rutinarias de administración del sistema, las funciones te ayudan a mantener tus scripts organizados y eficientes.

En este artículo repasamos los conceptos básicos de las funciones Bash: cómo definirlas y llamarlas, diez ejemplos prácticos y casos de uso habituales para que puedas empezar con tus propios proyectos de automatización.

Combinadas con estructuras de control como Sentencia if en Bash, las funciones te dan las herramientas para crear automatizaciones potentes. Al usarlas en tus scripts de Bash, consigues un código más limpio y modular, más fácil de entender y mantener.

Preguntas frecuentes

¿Las funciones Bash pueden tener variables locales?

Sí. Las funciones de Bash pueden tener variables locales usando la palabra clave local. Esto restringe el alcance de la variable a la función, evitando que afecte a variables con el mismo nombre fuera de ella.

¿Las funciones de Bash pueden ser recursivas?

Sí, las funciones de Bash pueden ser recursivas. El tamaño de la pila de llamadas por defecto en Bash es bastante limitado, así que dependiendo de la profundidad de recursión que necesites, puede que tengas que aumentarla con el comando ulimit -s antes de ejecutar el script.

¿Puedo usar funciones de Bash en otros scripts?

Sí, puedes compartir funciones de Bash entre scripts usando el comando source (o su abreviatura .). Al cargar un archivo que contiene las definiciones de tus funciones, estas quedan disponibles en el script que las invoca. Para procesos hijo, usa export -f nombre_función para que la función sea accesible.

¿Puedo usar funciones de Bash en pipelines?

Sí, pero requiere pasos específicos según el caso. Dentro de un script, puedes pasar datos directamente a una función mediante pipe (por ejemplo, cat file | my_function). Sin embargo, comandos como xargs o find -exec se ejecutan en un entorno nuevo. Para usar una función en ese contexto, debes exportarla (export -f my_func) e invocar Bash explícitamente (por ejemplo, xargs bash -c 'my_func "$@"').

¿Qué es una función en shell script?

Una función en un script de shell es un bloque de código con un propósito concreto que puede invocarse desde cualquier parte del script. Las funciones mejoran la modularidad del código, facilitan su reutilización y simplifican el mantenimiento. En Bash, las funciones se encapsulan dentro del propio script.

Compartir

Más del blog

Sigue leyendo.

Mejores aplicaciones autoalojadas que puedes usar con Cosmos Cloud, imagen de portada con paneles de apps alrededor de un panel de Cosmos.
Servidores y SO

Las mejores aplicaciones autoalojadas para usar con Cosmos Cloud: archivos, multimedia, contraseñas, automatización y mucho más

Maybe ya tienes Cosmos Cloud en marcha y quieres saber qué aplicaciones encajan bien con él, o quizás aún no te has decidido por Cosmos y solo quieres ver si se adapta a tu flujo de trabajo

Nick PlataNick Plata 16 min de lectura
Portainer vs Cosmos Cloud para gestionar aplicaciones Docker: portada con diagrama de configuración híbrida y bloques de operaciones vs acceso en neón.
Servidores y SO

Portainer vs Cosmos Cloud: cuál encaja mejor para gestionar aplicaciones Docker

Si ya conoces Docker y solo quieres la forma más limpia de gestionar una pila de aplicaciones en crecimiento, aquí va la respuesta directa sobre Portainer vs Cosmos Cloud. Portainer es la mejor opción para el contro

Nick PlataNick Plata 14 min de lectura
Gráfico de Cosmos Cloud vs CasaOS vs Umbrel con tres rutas de autoalojamiento dentro de una red cloud abstracta.
Servidores y SO

Cosmos Cloud vs CasaOS vs Umbrel: ¿cuál encaja con tu configuración?

La respuesta corta: CasaOS sigue siendo el punto de partida más sencillo, Umbrel ofrece la experiencia más cuidada y seleccionada, y Cosmos Cloud tiene más sentido cuando necesitas un control más fino sobre el domi

Nick PlataNick Plata 11 min de lectura

¿Listo para desplegar? Desde 2,48 $/mes.

Cloud independiente, desde 2008. AMD EPYC, NVMe, 40 Gbps. 14 días de garantía de devolución.