2018年4月11日 星期三

Linux shell -- getopt


while getopts “a:b:c:?” argv # while等待使用者輸入getopts所設定的參數
do case $argv in # case來依據使用者所輸入的值來決定下一步的動作 a) VAR1=$OPTARG ;; # break之意
b) VAR2=$OPTARG ;; c) VAR3=$OPTARG ;; ?) # 無需變數帶入 usage exit ;; esac #結束時『case』字母倒過來 done

echo "$VAR1" "$VAR2" "$VAR3" 測試值是否被帶入

Input :
./filename -a 10 -b 20 -c 30

Output:
10 20 30


getopts的用法是使用一個字串(由引號"..."刮起來)來代表會用到的參數旗標,而冒號?:代表的是該旗標是帶有參數值的。像這個例子中”a:b:c:?”這個字串,代表有a, b, c這三個參數都需要帶有輸入的值,?則不需要帶值。所以接下來的case命令就可以用來處理使用者的輸入,當旗標a, b, c被引用時,他後面所接的參數值就會在case命令中透過變數$OPTARG指定給相對應的變數VAR1, VAR2, VAR3,以進行後續動作。而如果引用?,則直接執行usage函數後即離開exit**。

執行程式是要引用參數旗標的方式是減號加上旗標,後面再跟著參數值,也就是Linux慣用的命令輸入方式: script -option value

取自:https://ithelp.ithome.com.tw/articles/10105866



請勿轉載,本人個人學習用途之整理

沒有留言:

張貼留言