Pregunta

¿Cómo pasar todos los argumentos de una secuencia de comandos shell en otro? He tratado de $ *, pero como era de esperar, que no funciona si ha citado argumentos.

Ejemplo:

$ cat script1.sh

#! /bin/sh
./script2.sh $*

$ cat script2.sh

#! /bin/sh
echo $1
echo $2
echo $3

$ script1.sh apple "pear orange" banana
apple
pear
orange

Lo quiero para imprimir:

apple
pear orange
banana
¿Fue útil?

Solución

Uso "$@" en lugar de $* para preservar las comillas:

./script2.sh "$@"

Más información:

http://tldp.org/LDP/abs/html/internalvariables.html

  

$ *
  Todos los parámetros posicionales, visto como una sola palabra

     

Nota: "$ *" deben mencionarse

     

$ @
  Igual que $ *, pero cada parámetro es una cadena entre comillas, es decir, la   los parámetros se pasan en intacto, sin interpretación o expansión.   Esto significa, entre otras cosas, que cada parámetro en el argumento   la lista es visto como una palabra separada.

     

Nota:. Por supuesto, "$ @" debe citarse

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top