Saltar al contenido

Bash

Funciones Bash Scripts

Como en casi todo lenguaje de programación, puede utilizar funciones para agrupar trozos de código de una manera más lógica, o practicar el divino arte de la recursión.

Declarar una función es sólo cuestión de escribir function mi_func { mi_código }.

Llamar a la función es como llamar a otro programa, sólo hay que escribir su nombre.

 

8.1 Ejemplo de funciones

 

           #!/bin/bash 
           function salir {
               exit
           }
           function hola {
               echo ¡Hola!
           }
           hola
           salir
           echo petete

Las líneas 2-4 contienen la función ‘salir’. Las líneas 5-7 contienen la función ‘hola’. Si no está completamente seguro de lo que hace este script, por favor, ¡pruébelo!.

Tenga en cuenta que una función no necesita que sea declarada en un orden específico.

Cuando ejecute el script se dará cuenta de que: primero se llama a la función ‘hola’, luego a la función ‘quit’, y el programa nunca llega a la línea 10.

8.2 Ejemplo de funciones con parámetros

 

                #!/bin/bash 
                function salir {
                   exit
                }  
                function e {
                    echo $1 
                }  
                e Hola
                e Mundo
                salir
                echo petete

Este script es casi idéntico al anterior. La diferencia principal es la función ‘e’. Esta función imprime el primer argumento que recibe. Los argumentos, dentro de las funciones, son tratados de la misma manera que los argumentos suministrados al script.

Pasar argumentos a un script bash

  • admin 

Podemos crear un fichero ejecutable llamado parametros.sh y copiar lo siguiente:

#!/bin/bash
echo $1

Si invocamos el script con el siguiente comando:

parametros.sh primero

el resultado sería:

primero

Como vemos, el argumento “primero” ha quedado almacenado en la variable $1 (sí, con bash se pueden usar variables ¿no es maravilloso?).

El siguiente comando:

parametros.sh primero segundo

Nos mostrará lo mismo que antes:

primero

Los argumentos en bash se separan por un espacio, de tal forma “segundo” sería el segundo argumento. Para recogerlo y mostrarlo tendríamos que modificar nuestro script:

#!/bin/bash
echo $1
echo $2

Para recoger el tercer argumento usaríamos $3 y así sucesivamente.

Existe una variable, $#, que se crea automáticamente que contiene el número de argumentos que se han pasado al script:

#!/bin/bash
echo "Total argumentos: $#"

al llamarlo con:

parametros.sh primero segundo

mostrará:

Total argumentos: 2

También se crea automáticamente otra variable, $@, que es un array que contiene todos los argumentos. Si hacemos:

#!/bin/bash
echo $@

nos mostará todos los argumentos:

parametros.sh primero segundo

resultado:

primero segundo

Ya veremos en otra entrega cómo trabajar con este y otros arrays.

Los parámetros especiales

Estas también son variables reservadas que permite en algunos casos efectuar operaciones sobre los mismos parámetros.
Estos parámetros son los siguientes:

$0	Contiene el nombre del script tal como es invocado
$*	El conjunto de todos los parámetros en un solo argumento
$@	El conjunto de argumentos, un argumento por parámetro
$#	El número de parámetros pasados al script 
$?	El código de retorno del último comando
$$	El PID del shell que ejecuta el script
$!	El PID del último proceso ejecutado en segundo plano

¿Qué utilidad tiene esto de los argumentos?

Los argumentos dan una gran flexibilidad a nuestros scripts ya que mediante ellos podemos indicar con qué fichero o directorio queremos trabajar o especificar un usuario por ejemplo.