1
Gracias

Unas palabras de agradecimiento nunca están de más.

Bash – Los parámetros

Es posible pasar a un script los argumentos que necesita para su ejecución a partir de la línea de comandos. Estos argumentos son llamados parámetros y contienen dos categorías: los parámetros posicionales y los parámetros especiales.




Los parámetros posicionales

Estos son los argumentos pasados al script cuando este es invocado. Son almacenados en las variables reservadas 1,2,3,...9,10,11,... y pueden ser llamados con las expresiones $1,$2...${10},${11}..

Nota: El shell Bourne está limitado a los parámetros del 0 al 9.

Ejemplo 1

A continuación, un pequeño script que muestra ciertos argumentos pasados como parámetros en función de su posición:

#!/bin/bash 
# muestra_param.sh
echo "El 1er parámetro es: $1"
echo "El 3er parámetro es: $3"
echo "El 10mo parámetro es: ${10}"
echo "El 15 parámetro es: ${15}"


Tan solo hay que llamar al script desde el terminal y enviarle un cierto número de parámetros:

$ ./muestra_param.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 


Nota: El símbolo $ lo utilizamos para indicar que estamos introduciendo lo que escribimos en consola.

Y devuelve:

El 1er parámetro es: 1 El 3er parámetro es: 3 El 10mo parámetro es: 10 El 15 parámetro es: 15


O también:
$ ./muestra_param.sh uno 2 tres 4 5 6 7 8 9 diez 11 12 13 14 quince 16 17


Dando como resultado:
El 1er parámetro es: uno El 3er parámetro es: tres El 10mo parámetro es: diez El 15 parámetro es: quince


Nota: Si algunos parámetros contienen caracteres especiales o espacios, entonces es necesario ponerlo entre comillas.

Los parámetros especiales

Estas también son variables reservadas que permiten (en algunos casos) efectuar operaciones sobre los mismos parámetros.

A continuación una lista de parámetros especiales:

  • $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.

Ejemplo 2

Un script que pone en práctica los parámetros especiales:
#!/bin/bash 
# muestra_param_2.sh
# Mostrar el nombre del script:
echo "El nombre de mi script es: $0"
# Mostrar el número de parametros:
echo "Has pasado $# paramètros"
# Lista de parámetros (un solo argumento):
for param in "$*" do echo "Aquí la lista de parámetros (un solo argumento) : $param" done
# Lista de parámetros (un parámetro por argumento)
echo "Aquí la lista de parámetros (un parámetro por argumento) :" for param in "$@" do echo -e "\tParámetro : $param" done
# Mostrar el proceso:
echo "El PID del shell que ejecuta el script es: $$" # Ejecución de un comando en segundo plano sleep 100 & # Mostrar el proceso ejecutado en segundo plano echo "El PID del ultimo comando ejecutado en segundo plano es: $!"
# Mostrar el código de retorno del último comando "echo":
echo "El código de retorno del comando anterior es: $?"
# Generación de un error echo "Generación de un error..."
# Mostrar el comando errado:
echo "ls /etc/password 2>/dev/null" ls /etc/password 2>/dev/null
# Mostrar el código de retorno del último comando:
echo "El código de retorno del comando precedente es: $?" exit


Escribimos en consola:
$ ./muestra_param_2.sh 1 2 3 cuatro 5 seis 


Lo que da como resultado:
El nombre de mi script es: ./muestra_param_2.sh Has pasado 6 parámetros Esta es la lista de parámetros (un solo argumento): 1 2 3 cuatro 5 seis Esta es la lista de parámetros (un parámetro por argumento) : Parámetro: 1 Parámetro: 2 Parámetro: 3 Parámetro: cuatro Parámetro: 5 Parámetro: seis El PID del shell que ejecuta el script es: 6165 El PID del último comando ejecutado en segundo plano es: 6166 El código de retorno del comando precedente es: 0 Generación de error... ls /etc/password 2>/dev/null El código de retorno del comando precedente es: 1

Inicializar parámetros

El comando “set”

Es posible pasar directamente parámetros al shell gracias a un comando tan simple como “set”:

$ set param1 param2 param3


Inicializará automáticamente los parámetros posicionales "$1,$2,$3" con los valores "param1,param2,param3", borrando de este modo los antiguos valores si existieran. Los parámetros especiales "#,* et @" son automáticamente actualizados.

El comando “shift”

El comando interno “shift” permite desplazar los parámetros.

El valor del 1er parámetro ($1) es reemplazado por el valor del 2do parámetro ($2), el del 2do parámetro ($2) por el del 3er parámetro ($3), …

Es posible indicar como argumento (shift n) el número de posiciones que hay que desplazar los parámetros.

Ejemplo 3

A continuación veremos el empleo del comando interno “shift”.
#!/bin/bash 
# desplaza_param.sh echo

echo "Número de parámetros: $#"
echo "El 1er parámetro es: $1"
echo "El 3er parámetro es: $3"
echo "El 6to parámetro es: $6"
echo "El 10mo parámetro es: ${10}"
echo "============================================="
echo "Desplazar una posición con el comando \"shift\"" shift
echo "Número de parámetros: $#"
echo "El 1er parámetro es: $1"
echo "El 3er parámetro es: $3"
echo "El 6to parámetro es: $6"
echo "El 10mo parámetro es: ${10}"
echo "============================================="
echo "Desplazar cuatros posiciones con el comando \"shift 4\"" shift 4 echo "Número de parámetros: $#"
echo "El 1er parámetro es: $1"
echo "El 3er parámetro es: $3"
echo "El 6to parámetro es: $6"
echo "El 10mo parámetro es: ${10}"


Y su resultado:
$ ./desplaza_param.sh 1 2 3 4 5 6 7 8 9 10 


Número de parámetros: 10
El 1er parámetro es: 1
El 3er parámetro es: 3
El 6to parámetro es: 6
El 10mo parámetro es: 10
=============================================
Desplazar una posición con el comando "shift"
Número de parámetros: 9
El 1er parámetro es: 2
El 3er parámetro es: 4
El 6to parámetro es: 7
El 10mo parámetro es:
=============================================
Desplazar cuatro posiciones con el comando "shift 4"
Número de parámetros: 5
El 1er parámetro es: 6
El 3er parámetro es: 8
El 6to parámetro es:
El 10mo parámetro es:


Foto: © Everypixel
1
Gracias

Unas palabras de agradecimiento nunca están de más.

Haz una pregunta
Nuestros contenidos son redactados en colaboración con expertos del ámbito tecnológico bajo la dirección de Jean-François Pillou, fundador de CCM.net. CCM es un sitio de tecnología líder a nivel internacional y está disponible en 11 idiomas.
Consulta también
El documento « Bash – Los parámetros » se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.

¡Suscríbete a nuestra Newsletter!

Recibe nuestros mejores artículos

¡Suscríbete a nuestra Newsletter!