Question

Comment passer dois-je tous les arguments d'un script shell dans une autre? J'ai essayé $ *, mais comme je m'y attendais, cela ne fonctionne pas si vous avez cité des arguments.

Exemple:

$ 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

Je veux qu'il imprimer:

apple
pear orange
banana
Était-ce utile?

La solution

Utilisez "$@" au lieu de $* pour préserver les citations:

./script2.sh "$@"

Plus d'infos:

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

  

$ *
  Tous les paramètres de position, considérée comme un seul mot

     

Note: "$ *" doit être cité

     

$ @
  Même chose que $ *, mais chaque paramètre est une chaîne entre guillemets, qui est, le   les paramètres sont transmis intacts, sans interprétation ou d'expansion.   Cela signifie, entre autres, que chaque paramètre dans l'argument   la liste est considérée comme un mot distinct.

     

Note:. Bien sûr, devrait être cité "$ @"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top