Pasar argumentos a un script bash
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.