ARTICLES
Passage de paramètres en Bash
Je suis tombé sur un problème tout con aujourd’hui : je voulais passer tous les paramètres que je recevais dans un script Bash à un autre script (un genre de “proxy” en quelque sorte).
Le but : ./script.sh --param1 'valeur' -a 3 => appelle /mon/autre/script.pl --param1 'valeur' -a 3 (et pas que pour les paramètres --param1 et -a hein…).
Étant donné que la variable Bash qui stocke tous les paramètres reçus, c’est $*, j’ai fait ça :
1# blabla, je fais des trucs vachement utiles
2
3/mon/script.pl $*Ça marchait bien, jusqu’à ce qu’il y ait un espace dans un des paramètres, exemple :
1$ ./script.sh -a 1 -b 'ceci est une phrase' -c 'toto'Là je me suis retrouvé comme un con, mon second script recevait -a 1 et -b 'ceci. Ce qui est, vous en conviendrez, nul à chier.
Du coup, sans transition, la solution : "$@" (notez bien les double quotes). Dans mon cas :
1# blabla, je fais des trucs vachement utiles
2
3/mon/script.pl "$@"Et voilà. Encore le genre de truc évident mais tant qu’on a pas eu le souci on le sait pas.