Hola a todos, hoy os voy a explicar como utilizar las funciones en shellscript.
Las funciones nos permiten ejecutar un código cuando se llame desde cualquier parte de nuestro script.
La forma de hacer una función es la siguiente:
#!/bin/bash nombre_funcion(){ # codigo }
Veamos un ejemplo:
#!/bin/bash holaMundo(){ echo "Hola mundo" }
Si esto lo ejecutamos, esto no mostrará nada, ¿porque? Por qué solo hemos declarado la función y no la hemos llamado. Para hacer que funcione
#!/bin/bash holaMundo(){ echo "Hola mundo" } holaMundo
Este es el resultado:
¿Cómo le pasamos parámetros a nuestra función? Igual que hacemos con los parámetros al llamar nuestro script. Os dejo un tutorial donde hablo sobre esos parámetros.
Pues con una función haríamos lo mismo, veamos un ejemplo:
#!/bin/bash suma(){ resultado=$(($1+$2)) echo "La suma de $1 y $2 es igual a $resultado" } suma 10 5
Como vemos con suma 10 5, le pasamos esos parámetros que los recogemos con $1 y $2.
Pero, ¿y si queremos devolver el valor de la suma en lugar de mostrar un mensaje? Lo haremos con $? que nos devuelve el ultimo valor retornado.
#!/bin/bash suma(){ resultado=$(($1+$2)) return $resultado } suma 10 5 echo $?
Este es el resultado:
También tenemos que tener en cuenta que las variables son todas globales, es decir que desde fuera de la función puedo acceder al valor de la variable de la función.
#!/bin/bash suma(){ resultado=$(($1+$2)) return $resultado } suma 10 5 echo $? echo $resultado
Este es el resultado:
La forma de solucionarlo es de:
#!/bin/bash suma(){ local resultado=$(($1+$2)) return $resultado } suma 10 5 echo $? echo $resultado
Este es el resultado (resultado no existiría):
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta