• # Re: passage d'option

    Posté par . En réponse au message passage d'option. Évalué à 3.

    J'imagine que ton script avec une boucle while ressemble à ça:
    while getopts abc: option
    do
     case $option in
     a)echo a;;
     b)echo b;;
     c)echo $OPTARG;;
     *)echo "pas d'options";;
     esac
    done
    
      Si tu ne passes pas d'argument, getopts renvoie faux dès le premier appel et le case n'est jamais exécuté, le message "pas d'options" ne s'affiche donc pas.
      getopts renseigne une variable supplémentaire OPTIND qui permet de savoir combien d'arguements ont été traités. Tu devrais arriver à détecter l'absence d'option en faisant:
    while getopts abc: option
    do
     case $option in
     a)echo a;;
     b)echo b;;
     c)echo $OPTARG;;
     esac
    done
    if [ "$OPTIND" -eq 1 ]
    then
     echo "pas d'option"
    fi