2017-08-07 4 views
0

私はスイッチケースループ内でgetoptsを使用しようとしています。 もし私がgetoptsだけを使うのであれば、それは動作しているスイッチケースだけですが、私はそれらの2つを組み合わせてgetopts dosをトリガしません。スイッチケースのbash - getopts

私はここ

は、コード本質である...多くを検索するが、私の猫はそれらを結合する方法については、一切の言及をフィン、および問題私を与えるために私は愚かな何かが欠けています。

#!/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 

私は

# bash -x test.sh op -a 

iは

+ case $1 in 
+ getopts :a opt 

を取得(およびデバッグすることなく、私は何も得る)ことを行う

ことを私はこれらの2

を組み合わせることが欠落していることを何

ありがとう:)

答えて

1

への呼び出しの前に、op)の冒頭にshift命令を追加して、op引数自体を食べる必要があります。そうでなければ、が分析する最初の引数はopであり、自動的に停止します(オプションの終了)。

+0

ありがとうございました。完璧に働く – yntnm