Parámetros en shell script

Cuando invocamos un comando, muchas veces le pasamos parámetros que modifica el comportamiento normal del comando.
Si escribimos ls nos muestra el contenido del directorio actual, pero si escribimos un parámetro, como en ls ~, el contenido que muestra no es el del directorio actual, sino el de la home del usuario.

En nuestros scripts también podemos procesar los parámetros recibidos. Para ello, podemos acceder a cada uno de ellos indicando su posición con $N, siendo N de 1 a 9 o con ${N}, que no se restringe a una única cifra. $0 está reservado para el nombre del script.

Podríamos trabajar con los parámetros de un script así:

#!/bin/bash

echo "Estamos ejecutando $0"
echo "El primer parámetro es $1"
echo "El segundo parámetro es $2"
echo "El tercer parámetro es $3"
echo "El undécimo parámetro es ${11}"

Pero este formato sólo valdría si siempre recibiese el mismo número de parámetros y siempre en el orden esperado. Como en la vida real esto es utópico, tenemos más herramientas para trabajar con los parámetros en shell script, como saber el número de parámetros recibidos, que se almacenan en la variable $#:

#!/bin/bash

echo "Número de parámetros recibidos: $#"

Podemos acceder al conjunto de los parámetros recibidos con $@ o con $*:

#!/bin/bash

echo "Número de parámetros recibidos: $#"
echo "Mostramos los parámetros con \$@: $@"
echo "Mostramos los parámetros con \$*: $*"

Estas dos variables nos permiten recorrer individualmente cada uno de los parámetros recibidos:

#!/bin/bash

for i in "$@"
do
    echo $i
done

De esta manera, podemos procesar individualmente cada parámetro, independientemente del número de parámetros recibidos o de si la posición ocupada por el parámetro es de una o más cifras.

 

 

2 comentarios en «Parámetros en shell script»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.