2017-08-07 4 views
0

J'essaie d'utiliser des getopts dans une boucle de boîtier de commutateur. si j'utilise seulement getopts ou seulement le boîtier de commutateur c'est le travail, cependant quand je combine ces deux les getopts dos ne se déclenchent pas.bash - getopts dans le boîtier du commutateur

j'ai recherche beaucoup mais je chat ailettes toute mention sur la façon de les combiner, et problème que je manque quelque chose de stupide donc pour me donner ...

est ici l'essence de code.

#!/bin/bash 
case $1 in 

     ver) 
      echo "vesion" 
      exit 0 
     ;; 
     op) 
      while getopts ":a" opt; do 
       case $opt in 
       a) 
        echo "-a was triggered!" >&2 
       ;; 
       \?) 
        echo "Invalid option: -$OPTARG" >&2 
       ;; 
       esac 
     done 
     ;; 
esac 

quand je fais que

# bash -x test.sh op -a 

i get

+ case $1 in 
+ getopts :a opt 

(et sans debug i get rien)

qu'est-ce que je manque de combiner ces deux

Merci :)

Répondre

1

Vous devez ajouter une instruction shift au début de votre choix op), avant l'appel à getopts, manger l'argument op lui-même. Sinon, le premier argument que getopts analysera est op et il s'arrêtera silencieusement (fin des options).

+0

Merci. travail parfait – yntnm