Imprimir esta página

Parámetros en shell scripts y funciones

21 Julio 2018 by 0 Comment Programación 1364 Views
Parámetros en shell scripts y funciones
Valora este artículo
(0 votos)

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

Información adicional

  • Nivel de dificultad: Medio
  • ¿Tutorial sacado de otra web/foro?: No