使用getopts,示例以下:spa
//test.sh # getopts :s:h表示這個命令接受2個帶參數選項,分別是-h和-s while getopts :s:h opt do case $opt in s) echo "-s=$OPTARG" ;; :) echo "-$OPTARG needs an argument" ;; h) echo "-h is set" ;; *) echo "-$opt not recognized" ;; esac done
在以上示例中,命令行
一、執行code
sh test.sh -h hellow -s sort
運行結果爲字符串
-h is setget
二、執行以下test
sh test.sh -s sort -h hellow
結果爲sort
-s=sort
-h is settop
重要信息:while
getopts後面的字符串就是能夠使用的選項列表,每一個字母表明一個選項,後面帶:的意味着選項除了定義自己以外,還會帶上一個參數做爲選項的值,好比d:在實際的使用中就會對應-d 30,選項的值就是30;getopts字符串中沒有跟隨:的是開關型選項,不須要再指定值,至關於true/false,只要帶了這個參數就是true。若是命令行中包含了沒有在getopts列表中的選項,會有警告信息,若是在整個getopts字符串前面也加上個:,就能消除警告信息了。co
全部選項參數必須寫在其它參數的前面,由於getopts是從命令行前面開始處理,遇到非-開頭的參數,或者選項參數結束標記--就停止了,若是中間遇到非選項的命令行參數,後面的選項參數就都取不到了。