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.
Pingback: Funciones en Shell Script – Linux en Español
Pingback: Mostrar ayuda y usar modificadores en Shell Script – Linux en Español