Alors c'est peut être que getopt met la zone, ou alors autre chose.
Pour t'en convaincre, essaye la chose suivante:
> cat foo
#!/bin/sh
for arg in $*; do echo "$arg"; done
for arg in "$@"; do echo "$arg"; done
> ./foo a b\ c
a
b
c
a
b c
donc dans le 1er cas ($*), les arguments avec espaces ne sont pas préservés, alors qu'ils le sont dans le 2nd cas. Après, je n'utilise jamais getopt, laors je ne peux pas te dire. À toi de creuser de ce côté là.
De mon côté je fais plutôt des choses du genre (avec case, parce que case ça autorise le pattern matching et que je n'aime pas les if parce que j'oublie toujours la syntaxe et en plus ça fork, contrairement à if [ [ mon-test ]] mais qui n'existe qu'en bash je crois ):
for arg
do
case "$arg" in
-a) a_opt=1; shift;;
--truc) truc_opt=2ドル; shift; shift;;
*) break,
esac
done
# etc.
Note pour les spéciliste du markdown: comment fait on pour avoir 2 crochets ouvrants à suivre sans qu'il me mettre un lien vers 1 truc wikipedia qui n'existe pas ? Grrrr, ça devient compliquer d'aider :(
[^] # Re: Il me reste le point 2
Posté par defmonkey . En réponse au message Petits problèmes pour un script. Évalué à 2.
Alors c'est peut être que getopt met la zone, ou alors autre chose. Pour t'en convaincre, essaye la chose suivante:
donc dans le 1er cas ($*), les arguments avec espaces ne sont pas préservés, alors qu'ils le sont dans le 2nd cas. Après, je n'utilise jamais getopt, laors je ne peux pas te dire. À toi de creuser de ce côté là.
De mon côté je fais plutôt des choses du genre (avec case, parce que case ça autorise le pattern matching et que je n'aime pas les if parce que j'oublie toujours la syntaxe et en plus ça fork, contrairement à
if [ [ mon-test ]]mais qui n'existe qu'en bash je crois ):Note pour les spéciliste du markdown: comment fait on pour avoir 2 crochets ouvrants à suivre sans qu'il me mettre un lien vers 1 truc wikipedia qui n'existe pas ? Grrrr, ça devient compliquer d'aider :(