Una guía rápida sobre cómo crear y llamar funciones en Bash.
Una función es un bloque de código reutilizable que se utiliza para realizar alguna acción. Con funciones, obtenemos una mejor modularidad y un alto grado de reutilización de código.
Bash proporciona algunas funciones integradas como echo
y read
, pero también podemos crear nuestras propias funciones.
Creando una Función en Bash
Hay dos formas de crear funciones en Bash:
Una forma es simplemente usar el nombre de la función, por ejemplo:
functionName(){
// scope of function
}
Versión compacta:
functionName(){ echo "hello"; }
Otra forma es declarar una función usando el function
palabra clave:
function functionName {
// scope of function
}
Versión compacta:
function functionName { echo "hello"; }
Observe cómo no necesitamos el ()
cuando se usa el function
palabra clave para crear una función.
Puntos importantes a tener en cuenta sobre las funciones de Bash:
- El código entre llaves
{}
es el cuerpo y el alcance de la función - Al llamar a una función, solo usamos el nombre de la función desde cualquier parte del script bash
- La función debe definirse antes de que pueda usarse
- Al usar la versión compacta, el último comando debe tener un punto y coma
;
Ejemplo:
El siguiente código crea una función que imprime "Hello World" en la consola. El nombre de la función se llama printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Llamar a una función en Bash
¿Cómo llamamos a la función anterior? Todo lo que necesita hacer en su script bash es escribir el nombre de la función y se llamará.
Por ejemplo:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
Salida:
"Hello World"
Pasar argumentos
La función anterior printHello()
no tiene ningún parámetro. Cada vez que lo llamamos, obtenemos la salida "Hello World". Pero, ¿y si quisiéramos crear una función más genérica? Por ejemplo, podemos llamar a la función con algún argumento e imprimirá lo que le enviemos.
Hay dos formas de hacer esto.
Primero podemos modificar el printHello()
función para imprimir los argumentos que se le pasan:
Por ejemplo:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
Salida:
Hello World
Hello DevQA
Hello I
Observe cómo la tercera declaración de impresión printAny I love coding!
solo emitió "Hola, yo".
Esto se debe a que nuestra función está diseñada para tomar solo 1 parámetro $1
. La palabra "¡Me encanta programar!" en realidad son 3 parámetros.
Si quisiéramos imprimirlo todo, tendríamos que poner comillas alrededor del texto
Por ejemplo:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
Salida:
Hello I love coding
Otro ejemplo, también podemos pasar dígitos:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
Salida:
Result is: 3
Valores devueltos
Las funciones de Bash también pueden devolver valores.
Por ejemplo:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
Salida:
The sum is: 3
Otra forma de devolver valores de una función es asignar el resultado a una variable que se puede usar cuando sea necesario.
Por ejemplo:
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
Salida:
The sum is: 3