2017-08-07 133 views
0

我試圖在開關盒循環中使用getopts。 如果我只使用getopts或只有開關的情況下工作,但是當我結合這兩個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 

我得到

+ case $1 in 
+ getopts :a opt 

(並沒有調試我什麼也沒有)

那是什麼,我缺少這兩個

結合

謝謝:)

回答

1

你應該在調用之前你op)選擇的開頭加上shift指令,以getopts,吃op說法本身。否則,getopts將分析的第一個參數是op,它會靜靜地停止(選項結束)。

+0

謝謝。工作完美 – yntnm