Depuis longtemps j'utilise le builtin (de /bin/sh) getopts dans certains
scripts. Une chose que je n'avait pas fait jusqu'à présent était de lui
passer une adresse mail en argument. J'ai tout essayé : mettre entre
simples quotes, et/ou protéger par un \ , rien n'y fait, visiblement le
shell voit passer un $@ et me bouffe tout le reste de ma ligne de
commande, avec des résultats dépendants de l'endroit où j'y place cette
adresse :
while getopts hmn:g:p: flag
do
case "$flag" in
h) usage ;;
n) NAME=$OPTARG ;;
m) EMAIL=$OPTARG ;;
g) FULLNAME=$OPTARG ;;
p) PASSWORD=$OPTARG ;;
*) usage ;;
esac
done
echo "NAME=$NAME, EMAIL=$EMAIL, FULLNAME=$FULLNAME, PASSWORD=$PASSWORD"
Je reçois :
NAME=blah, EMAIL=, FULLNAME=Blih Blah, PASSWORD=
Alors que si je passe EMAIL en dernier, le reste est bien renvoyé :
./monscript -n blah -g "Blih Blah" -p "abcd" -m 'blah.blih\@truc.fr'
NAME=blah, EMAIL=, FULLNAME=Blih Blah, PASSWORD=abcd
Il ya donc bien un gaga avec $@, que je ne sais pas contourner, et
Google n'a pas été mon ami, sur ce coup.
Merci,
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Xavier, dans le message <1k0qxj1.1ywsxob1m2uhvqN%, a écrit :
while getopts hmn:g:p: flag m) EMAIL=$OPTARG ;;
Ce serait bien de lui dire que l'option -m prend un argument.
''
Le backslash est superflu, et de toutes façons ne marcherait dans des single quotes.
xavier
Nicolas George <nicolas$ wrote:
Ce serait bien de lui dire que l'option -m prend un argument.
Ah mais que je suis con !
> ''
Le backslash est superflu, et de toutes façons ne marcherait dans des single quotes.
Je le savais, mais j'essayais tout, même l'impossible. Alors qu'un ":" suffisait. Les bugs les plus énormes sont toujours ceux qu'on ne voit pas, même quand on les a sous le nez :-)
Merci,
-- XAv In your pomp and all your glory you're a poorer man than me, as you lick the boots of death born out of fear. (Jethro Tull)
Nicolas George <nicolas$george@salle-s.org> wrote:
Ce serait bien de lui dire que l'option -m prend un argument.
Ah mais que je suis con !
> 'blah.blih@truc.fr'
Le backslash est superflu, et de toutes façons ne marcherait dans des single
quotes.
Je le savais, mais j'essayais tout, même l'impossible. Alors qu'un ":"
suffisait. Les bugs les plus énormes sont toujours ceux qu'on ne voit
pas, même quand on les a sous le nez :-)
Merci,
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Ce serait bien de lui dire que l'option -m prend un argument.
Ah mais que je suis con !
> ''
Le backslash est superflu, et de toutes façons ne marcherait dans des single quotes.
Je le savais, mais j'essayais tout, même l'impossible. Alors qu'un ":" suffisait. Les bugs les plus énormes sont toujours ceux qu'on ne voit pas, même quand on les a sous le nez :-)
Merci,
-- XAv In your pomp and all your glory you're a poorer man than me, as you lick the boots of death born out of fear. (Jethro Tull)