Índice

Comparación de las variables $* y $@

1. Uso de $* y de $@

Este capítulo presenta otras funcionalidades utilizadas en la programación shell que completan las abordadas en el capítulo Las bases de la programación shell.

Las variables $* y $@ contienen la lista de los argumentos de un script shell. Cuando no están entre comillas dobles, son equivalentes.

Ejemplo

El script test_var1.sh muestra el valor de cada argumento de la línea de comandos:

$ nl test_var1.sh  
     1  #! /usr/bin/ksh 
 
     2  contador=1 ; 
     3  for arg in $*    # Equivalente a $@  
     4  do 
     5    echo "Argumento $contador: $arg" 
     6    ((contador+=1)) 
     7  done 
$

A continuación, un ejemplo de llamada al script:

$ test_var1.sh a b c "d e f" g

Primera etapa: el shell actual trata los caracteres de protección antes de ejecutar el script. A este nivel, los espacios internos en "d e f" se protegen y no son vistos como separadores de palabras, sino como caracteres cualesquiera.

Segunda etapa: el shell hijo interpreta el script sustituido $* (o $@) por a b c d e f g.

 for arg in "$@ 
 o for arg in $* 
 images/fleche1.png 
 for arg in a b c d e f g

Los espacios que estaban protegidos a nivel de shell de trabajo no lo estarán a nivel del shell hijo. A continuación, el resultado de la ejecución ...