使用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是从命令行前面开始处理,遇到非-开头的参数,或者选项参数结束标记--就停止了,若是中间遇到非选项的命令行参数,后面的选项参数就都取不到了。