2017-07-05 3 views
0
test-fun(){  
    OPTIND=1 
    while getopts "waz" arg 
    do 
     case $arg in 
      w) 
       echo "ok w" 
       ;; 
      a) 
       echo "ok a" 
       ;; 
      z) 
       echo "ok z" 
       ;; 
     esac 
    done 
} 

test-fun -wz結果getopts関数で引数の順序を指定する方法は?上記テストの楽しみのために

ok w 
ok z 

test-fun -zw結果に

ok z 
ok w 

に私はすべての引数、テスト-楽しい関数の引数の順序を指定しますwaztest-fun zwを入力すると、エラーが発生しますwrong arguments' order for the function、どのように修正するのですか?

+0

オプションの引数の順序が重要なのはなぜですか? – chepner

+0

引数の順序には、私の実際の関数にとって有用な情報がいくつかあります。 – scrapy

+0

それは私が実際にどのようにオプションであるのか、また代わりに位置パラメータを使うべきかどうかを疑問に思います。 – chepner

答えて

0

改行コード(vars)付きの変数に引数を入れてソートし、新しい変数(vars1)を処理します。

test-fun(){  
OPTIND=1 
while getopts "waz" arg 
do 
    vars=$vars"\n"$arg 
done 
vars1=$(printf $vars | sort) 
for i in $vars1 

do 
    case $arg in 
     w) 
      echo "ok w" 
      ;; 
     a) 
      echo "ok a" 
      ;; 
     z) 
      echo "ok z" 
      ;; 
    esac 
done 
} 
関連する問題