Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Souci avec getopts

2 réponses
Avatar
xavier
Bonjour,

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"

En envoyant :
./monscript -n blah -g "Blih Blah" -m 'blah.blih\@truc.fr' -p "abcd"

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)

2 réponses

Avatar
Nicolas George
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.
Avatar
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)