Las funciones en Bash tienen una sintaxis similar a la de cualquier lenguaje de programación:
mi_funcion() {
# código
}
Invocarla es muy fácil: simplemente se escribe el nombre SIN los paréntesis:
mi_funcion
Recuerda que si quieres invocar la función desde consola, primero tienes que especificarlo con el comando source o el comando del punto (.) y el nombre del archivo donde está definida:
source mi_archivo.sh
Y luego propiamente el nombre de la función:
mi_funcion
Por supuesto, una función puede aceptar parámetros. Sólo que éstos no se escriben en la definición, sino cuando es invocada desde la terminal o bien dentro del mismo código:
mi_funcion() {
echo "Mi nombre es $1 y tengo $2 años."
}
mi_funcion Fulano 34 # Mi nombre es Fulano y tengo 34 años.
Las funciones también pueden devolver un valor con la palabra clave return y con $? se accede a ese valor. Si el retorno es 0, indica que la ejecución fue exitosa; si es otro número, ha ocurrido algún error.
mi_funcion() {
# código
return 15
}
mi_funcion
echo $? # 15 - Ocurrió un error
Podemos manejar los errores con un condicional if, evaluando si el retorno es distinto de cero. Por ejemplo:
cp lista.txt /home/
if [[ $? -ne 0 ]]; then
echo "Ha ocurrido un error"
fi
Existen dos tipos de variables: globales y locales. Las variables globales son accesibles desde cualquier parte del código; en cambio las locales sólo son accesibles dentro de la misma función y se especifican con la palabra local.
saludo="Hola, mundo, soy " # Variable global
mi_funcion() {
local nombre="Pablo" # Variable local
echo $saludo $nombre
}
echo $saludo # Hola, mundo, soy
echo $nombre # ERROR - No se puede acceder a la variable local $nombre
nombre y apellido, y que imprima el mensaje "¡Bienvenido, [nombre] [apellido]! Has ejecutado el archivo [nombre_del_archivo] cuyo PID es [PID]". (Pista: revisar el capítulo 6).0 si es mayor que 100 o el mismo número si es menor.producto. Mostrar el resultado en la terminal.