shell的getopts命令


getopts [option[:]] [DESCPRITION] VARIABLE option:表示為某個腳本可以使用的選項 ":" 冒號如果某個選項(option)后面出現了冒號(":"),則表示這個選項后面可以接參數(即一段描述信息DESCPRITION) VARIABLE:表示將某個選項保存在變量VARIABLE中 getopts是linux系統中的一個內置變量,一般用在循環中。每當執行循環時,getopts都會檢查下一個命令選項,如果這些選項出現 在option中,則表示是合法選項,否則不是合法選項。並將這些合法選項保存在VARIABLE這個變量中。 getopts還包含兩個內置變量,及OPTARG和OPTIND OPTARG 就是將選項后面的參數(或者描述信息DESCPRITION)保存在此變量當中。 OPTIND 這個表示命令行的下一個選項或參數的索引(文件名不算選項或參數) while getopts ":a:bc:" opt 第一個冒號表示忽略錯誤;字符后面的冒號表示該選項必須有自己的參數。 $OPTARG 存儲相應選項的參數,如下例中的11、5; $OPTIND 總是存儲原始$*中下一個要處理的選項(不是參數,而是選項,此處指的是a,b,c這三個選項,而不是那些數字,當然數字 也是會占有位置的)位置。 optind初值為1,遇到"x",選項不帶參數,optind+=1;遇到"x:",帶參數的選項,optarg=argv[optind+1],optind+=2; 舉例: [root@hdc_1 software]# vim getopts.sh #!/bin/bash echo $* while getopts ":a:bc:" opt do case $opt in a) echo $OPTARG $OPTIND;; b) echo "b $OPTIND";; c) echo "c $OPTIND";; ?) echo "error" exit 1;; esac done 執行:sh getopts.sh -a 11 -b -c 5 結果: -a 11 -b -c 5 11 3 b 4 c 6 解釋: 第一行輸出echo $* 第二行,optind初值為1,選項-a的參數為11,下一個要處理的選項-b位置為3(即OPTIND=3),所以輸出:11 3; 第三行,然后-b要處理的下一個選項-c位置為4,所以輸出:b 4; 第四行,再者-c有參數,所以下一個要處理的位置+2(即為6,照着所有參數也數的出來下一個參數即為6,因為如果有下一個參數那么一定是在參數值5之后的),所以輸出:c 6; 注:選項參數的格式必須是 -d val,而不能是中間沒有空格的-dval 【如-d 10 不能是-d10】 getopts是對腳本參數的校驗


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM