shell脚本使用getopts自定义传入参数选项

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

相关文章
相关标签/搜索