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是從命令行前面開始處理,遇到非-開頭的參數,或者選項參數結束標記--就停止了,若是中間遇到非選項的命令行參數,後面的選項參數就都取不到了。

相關文章
相關標籤/搜索