0Pricing
Linux Command Line & Bash Scripting Mastery · Lección

Funciones en scripts de Bash

Organice su código con funciones, fomente la reutilización y haga que sus scripts sean más claros y fáciles de mantener.

Funciones en scripts de Bash es una lección gratuita de Linux Command Line & Bash Scripting Mastery en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Linux Command Line & Bash Scripting Mastery, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Qué son las funciones de Bash?

En los scripts de Bash, una función es un bloque de código que realiza una tarea específica. Piense en ella como un min script dentro de su script principal.

Las funciones le ayudan a:

  • Reutilizar código: escribir una parte de la lógica una vez y llamarla varias veces.
  • Organizar los scripts: dividir tareas complejas en unidades más pequeñas y manejables.
  • Mejorar la legibilidad: hacer que el script sea más fácil de entender y mantener.

Definir una función sencilla

Hay dos formas habituales de definir una función en Bash. Ambas producen el mismo resultado. La primera sintaxis es la más común.

Pruebe a ejecutar este ejemplo. Define funciones, pero todavía no las llama.

#!/bin/bash

# Method 1: The most common way
my_first_func () {
  echo "Hello from my_first_func!"
}

# Method 2: Using the 'function' keyword
function my_second_func {
  echo "Hello from my_second_func!"
}

echo "Functions defined, but not called."

Llamar a sus funciones

Definir una función no la ejecuta. Para ejecutar el código de una función, solo tiene que llamarla por su nombre, como haría con cualquier otro comando.

Observe cómo llamamos a my_function después de definirla:

#!/bin/bash

my_function () {
  echo "This message is from inside the function."
}

echo "Script started."
my_function # Call the function here
echo "Script finished."

Variables locales en funciones

De forma predeterminada, las variables definidas dentro de una función de Bash son globales, lo que significa que se puede acceder a ellas y modificarlas desde cualquier parte del script.

Para evitar efectos secundarios no deseados y mantener aisladas sus funciones, use la palabra clave local para declarar una variable como local. Las variables locales solo existen dentro de esa función.

#!/bin/bash

global_message="I'm a global message"

my_function () {
  local func_message="I'm a local message"
  global_message="I've been changed by the function!"
  echo "Inside func: $func_message"
  echo "Inside func: $global_message"
}

echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"

Pasar argumentos a las funciones

Puede pasar información a sus funciones mediante argumentos, igual que con los comandos de shell normales. Dentro de la función, se accede a estos argumentos mediante variables especiales:

  • $1, $2, $3...: argumentos individuales
  • $#: número total de argumentos
  • $@: todos los argumentos como cadenas independientes
#!/bin/bash

greet_user () {
  echo "Hello, $1!"
  echo "You are $2 years old."
  echo "Total arguments received: $#"
  echo "All arguments: $@"
}

echo "Calling greet_user with two arguments:"
greet_user "Alice" 30

echo "\nCalling greet_user with one argument:"
greet_user "Bob"

Estado de salida de una función (return)

Una función, como cualquier comando, devuelve un estado de salida. Por convención, 0 significa que la ejecución tuvo éxito y cualquier valor distinto de cero indica un error.

Use la palabra clave return para establecer este estado de salida. Después puede comprobarlo mediante la variable especial $?, justo después de llamar a la función.

#!/bin/bash

check_age () {
  local age=$1
  if [ "$age" -ge 18 ]; then
    return 0 # Success: 18 or older
  else
    return 1 # Failure: under 18
  fi
}

check_age 25
echo "Exit status for 25: $?"

check_age 16
echo "Exit status for 16: $?"

if check_age 20; then
  echo "User is an adult."
else
  echo "User is a minor."
fi

Capturar la salida de una función

Mientras que return envía un estado de salida, si quiere que una función produzca un «valor» que pueda almacenarse en una variable, la función debe hacer echo de ese valor en la salida estándar.

Después puede capturar esta salida mediante la sustitución de comandos, colocando la llamada a la función dentro de $(...).

#!/bin/bash

get_full_name () {
  local first_name=$1
  local last_name=$2
  echo "$first_name $last_name" # Echo the full name
}

name="$(get_full_name "John" "Doe")"

echo "Full name captured: $name"

calculate_area () {
  local length=$1
  local width=$2
  echo $((length * width))
}

area=$(calculate_area 10 5)
echo "Calculated area: $area"

Ejemplo práctico: un registrador

Este es un ejemplo práctico de una función reutilizable: un registrador sencillo. Puede llamar a esta función desde cualquier parte del script para mostrar mensajes con una marca de tiempo, lo que facilita la depuración y el seguimiento.

#!/bin/bash

log_message () {
  local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
  local message="$1"
  echo "[$timestamp] $message"
}

log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."

Buenas prácticas para las funciones

Para escribir scripts claros y fáciles de mantener mediante funciones, tenga en cuenta estos consejos:

  • Manténgalo sencillo: cada función debe hacer bien una sola cosa.
  • Use nombres descriptivos: utilice nombres como validate_input o create_backup.
  • Use local: use siempre local para las variables dentro de las funciones a fin de evitar conflictos.
  • Añada comentarios: explique qué hace la función, cuáles son sus argumentos y qué devuelve.
  • Valide la entrada: si una función espera argumentos específicos, compruébelos.

Comprobar los argumentos de una función

Compruebe que entiende cómo se pasan los argumentos a las funciones de Bash y cómo se accede a ellos dentro de estas.

Funciones: repaso y próximos pasos

¡Excelente trabajo! Ha aprendido a usar las funciones de Bash.

Hemos visto lo siguiente:

  • Definir y llamar a funciones.
  • Usar local para el ámbito de las variables.
  • Pasar argumentos con $1, $# y $@.
  • Establecer el estado de salida con return.
  • Capturar la salida con echo y la sustitución de comandos.

Las funciones son fundamentales para escribir scripts de Bash modulares, reutilizables y fáciles de mantener. ¡Siga practicando para crear scripts más potentes y organizados!

Preguntas frecuentes

¿La lección «Funciones en scripts de Bash» es gratis?

Sí — el texto completo de «Funciones en scripts de Bash» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Linux Command Line & Bash Scripting Mastery, actualiza a CoddyKit PRO. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Qué aprenderé en «Funciones en scripts de Bash»?

Organice su código con funciones, fomente la reutilización y haga que sus scripts sean más claros y fáciles de mantener. Practicas Linux Command Line & Bash Scripting Mastery con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Linux Command Line & Bash Scripting Mastery?

No se requiere experiencia previa. Linux Command Line & Bash Scripting Mastery en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Funciones en scripts de Bash»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Linux Command Line & Bash Scripting Mastery?

Sí. Cada lección de Linux Command Line & Bash Scripting Mastery incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Estructuras de bucle (for, while)
  2. Funciones en scripts de Bash
  3. Argumentos y opciones de scripts ($@, $#, getopts)
  4. La sentencia case y la coincidencia de patrones
← Volver a Linux Command Line & Bash Scripting Mastery