Tanto en los scrips en Bash como en sus funciones, los parámetros nos ofrece la posibilidad de interactuar con ellos, pudiéndole enviar datos para que los procese o que el script actúe de una determinada manera según los parámetros enviados. Veamos cómo trabajar con ellos y cómo sacarles partido.
Trabajar con un parámetro concreto
Los parámetros se almacenan automáticamente en orden con un dólar delante del número que ocupan la posición que ocupan, empezando por 1, no por 0. Es decir, el primer parámetro de la función / script será $1; el segundo, $2... y así sucesivamente.
$0 se reserva para el nombre del script.
Ojo, en una función $0 es el nombre del script, pero $1 es el primer parámetro de la función, no del script.
#!/bin/bash
function saludo()
{
echo "Soy una función que se llama $0 y saluda: Hola, "$1
}
textosaludo=$(saludo Pepe)
echo $textosaludo
Si no le pasamos parámetros, devuelve:
./funcionquesaluda.sh
Soy una función que se llama ./funcionquesaluda.sh y saluda: Hola, Pepe
Y si le pasamos parámetros, devuelve lo mismo:
./funcionquesaluda.sh Manolo
Soy una función que se llama ./funcionquesaluda.sh y saluda: Hola, Pepe
Trabajar con todos los parámetros
Si queremos conocer todos los parámetros, usaremos $* y para saber el número de parámetros, $#.
Así pues, el script:
#!/bin/bash
function saludo()
{
echo "Soy una función que se llama" $0 "y saluda: Hola, "$1
echo "He recibido "$# " parámetros, que son: "$*
}
textosaludo=$(saludo Pepe María Juan Marcos Manolo Marta)
echo $textosaludo
Devuelve:
./funcionquesaluda.sh Manolo
Soy una función que se llama ./funcionquesaluda.sh y saluda: Hola, Pepe He recibido 6 parámetros, que son: Pepe María Juan Marcos Manolo Marta
Y aquí vemos un nuevo concepto. Al escribir varios echo en una función, concatena las cadenas. Si quisiéramos que no lo hiciera, añadiríamos un retorno de carro:
#!/bin/bash
function saludo()
{
echo "Soy una función que se llama" $0 "y saluda: Hola, "$1
echo -e "\r"
echo "He recibido "$# " parámetros, que son: "$*
}
textosaludo=$(saludo Pepe María Juan Marcos Manolo Marta)
echo $textosaludo
Nos devolvería:
./funcionquesaluda.sh Manolo
He recibido 6 parámetros, que son: Pepe María Juan Marcos Manolo Marta