while getopts :dvt:n: c do case $c in d) DEBUG=yes ;; t) TYPE=$OPTARG ;; n) NUMBER=$OPTARG ;; v) VERBOSE='yes' ;; esac done其中冒號:是說這個參數一定要有跟著的參數值,沒有冒號像dv表示後面沒有帶著參 數值, 例如最常看到-v是說程式執行時是verbose mode就是這樣。 $OPTARG就是跟在後面的 參數,getopts自動幫我處理好,並且一個一個的丟進 $OPTARG來。他也有$OPTIND跟C library的用法很像