• [^] # Re: Il me reste le point 2

    Posté par . 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:

    > 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 :(