[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [bash] expansion de variable avec double quote



hd a écrit :

Régis Grison a écrit :

hd a écrit :

Bonjour,

Je rencontre un problème avec l'expansion des variables sous bash

[...]
et je le lance avec la commande :
MY_ARGS='--enable-truc CFLAGS="-g3 -O0"' ./script.sh

je m'attends à ce qu'il soit interprété comme :
   ./configure --enable-truc CFLAGS="-g3 -O0"

mais bash le transforme en :
   ./configure --enable-truc 'CFLAGS="-g3' '-O0"'
[...]

Là comme ça, je serais tenté de complètement contourner le problème :
dans le shell :
export CFLAGS="-g3 -O0"
oui mais le pb est que le "script.sh" bidouille lui-même le CFLAGS. Donc mon CFLAGS déclaré en externe (via export) sera détruit entre temps
Heu... si script.sh bidouille le CFLAGS, je ne suis pas sûr que le passer comme tu veux le faire marche mieux, si ?


ensuite tu peux lancer ton script avec dans la variable MY_ARGS :
MY_ARGS="--enable-truc ./script.sh"
je suppose que tu voulais dire
   MY_ARGS="--enable-truc" ./script.sh
Là je suis un peu paumé, si tu mets des "" juste autour d'un argument, ne pas en mettre du tout ferait la même chose, non ?

Sinon, un truc auquel on ne pense pas toujours c'est l'argument -- qui permet de séparer les arguments d'un appli des arguments de l'appli passée en paramètres. Mais je pense que la solution est au dessus.
il me semble avoir déjà vu ça avec 'startx'
   startx 'client param' -- 'server param'
mais dans ce cas, c'est 'startx' qui gère le '--' (qui le parse)
le '--' n'a pas de signification particulière pour bash à ma connaissance
est ce de cela dont tu veux parler ou évoques tu autre chose ?
Je veux bien parler de ça mais il me semble que c'est géré au niveau du shell :
rg@merlin:~$ echo  -n test
testrg@merlin:~$ echo -- -n test
-- -n test
rg@merlin:~$

Ceci dit, je ne penses toujours pas que ça soit la solution. La proposition de Romaric DEFAUX de mettre des \" me semble beaucoup plus intéressante.

Régis.


Reply to: