Je suis relativement nouveau dans ce domaine, et je suis en cours d'exécution de mon script shell nommé « statsrandomrun.sh » avec des extraits de code suivants:Pourquoi getopts dans bash ne donne pas: (par docs) lorsqu'une option manque son argument associé?
#!/bin/bash
while getopts "m:s:xh" opt; do
case $opt in
m)
MU=$OPTARG; mflag=true; ;;
s)
SIGMA=$OPTARG; sflag=true; ;;
h)
usage; exit;;
x)
xflag=true ;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "HaHa! Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
mais il semble que chaque fois que je passe cette commande
/.statsrandomrun.sh -m
Je ne vois jamais
echo "HaHa! Option -$OPTARG requires an argument." >&2
travail
, que je dans l'extrait mis en œuvre ci-dessus. Mon bash me montre juste un autre message:
option requires an argument -- m
que je n'ai pas évidemment mis dans mon code. En outre, il suit une autre ligne
Invalid option: -
Je me attends que cela ait lieu, parce que la sortie de help getopts
contient les éléments suivants:
Si un argument requis est introuvable, getopts place un « : » dans NOM et définit OPTARG sur le caractère d'option trouvé.
Que se passe-t-il? Des idées? Je vous remercie de toute aide à l'avance :)
Voici quelques ressources. Http://wiki.bash-hackers.org/howto/getopts_tutorial et http://mywiki.wooledge.org/BashFAQ/035?highlight=%28getopts%29. Ces deux sites ont beaucoup de bonnes informations sur les scripts shell. –
Quand je lance votre script: 'script.sh -m' je reçois' script.sh: l'option nécessite un argument - m' et ensuite une ligne en dessous 'Option invalide: -' –
Quelle est la ligne" shebang "dans votre script ? –