這篇文章給大家介紹怎么在Shell腳本中使用getopts處理多命令行選項,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
為安化等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及安化網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、安化網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!在Linux系統(tǒng)中,許多命令都提供了選項,使用不同的選項就會得到不通的執(zhí)行結(jié)果
例如:ls命令,ls命令提供了多個選項:-l、-a、-A、-h、-i等等,每個選項具有不同的功能,我們自己寫腳本時也可以定義選項,提示用戶如何使用,本文介紹如何使用getopts命令來處理命令選項。
1.getopts命令的如何使用:
用getopts命令獲取到腳本選項后,getopts會將獲取到的選項所對應(yīng)的參數(shù)(選項對應(yīng)的參數(shù),并不是選項本身,有的命令選項后面是需要跟一個參數(shù)的,例如tcpdump 的-w選項,后面需要指定一個文件來保存抓包數(shù)據(jù))自動保存到OPTARG這個變量中。
getopts命令格式:getopts OPTSTRING VARNAME
OPTSTRING:告訴getopts會有哪些選項和參數(shù)(用選項后面加“:”來表示選項后面需要加參數(shù))
VARNAME:保存getopts獲取到的選項
示例:getopts ahf: var
告訴getopts查找-a、-h、-f選項,其中f選項后面需要跟一個參數(shù),獲取到的選項都保存到變量var中
getopts命令支持兩種錯誤報告模式,詳細(xì)錯誤報告模式和抑制錯誤報告模式。
在詳細(xì)錯誤報告模式下:如果getopts檢測到一個無效的選項,var的值會被設(shè)置為(?);如果getopts檢測到一個后面需要跟參數(shù)的選項,后面沒有參數(shù),var的值也會被設(shè)置為(?)
在抑制錯誤報告模式下:如果getopts檢測到一個無效的選項,var的值會被設(shè)置為(?),變量OPTARG會被設(shè)置為這個無效的選項;如果getopts檢測到一個后面需要跟參數(shù)的選項,后面沒有參數(shù),var的值會被設(shè)置為(:),變量OPTARG會被設(shè)置為這個無效的選項
2.通過腳本來講解getopts如何獲取選項,如何賦值給變量VARNAME和OPTSTRING:
示例:
#!/bin/bash status=off #定義變量status,初始值設(shè)置為off filename="" #定義變量filename,用于保存選項參數(shù)(文件) output="" #定義變量output,用于保存選項參數(shù)(目錄) Usage () { #定義函數(shù)Usage,輸出腳本使用方法 echo "Usage" echo "myscript [-h] [-v] [-f <filename>] [-o <filename>]" exit -1 } while getopts :hvf:o: varname #告訴getopts此腳本有-h、-v、-f、-o四個選項,-f和-o后面需要跟參數(shù) (沒有選項時,getopts會設(shè)置一個退出狀態(tài)FALSE,退出循環(huán)) do case $varname in h) echo "$varname" Usage exit ;; v) echo "$varname" status=on echo "$status" exit ;; f) echo "$varname" echo "$OPTARG" filename=$OPTARG #將選項的參數(shù)賦值給filename if [ ! -f $filename ];then #判斷選項所跟的參數(shù)是否存在且是文件 echo "the source file $filename not exist!" exit fi ;; o) echo "$varname" echo "$OPTARG" output=$OPTARG #將選項參數(shù)賦值給output if [ ! -d $output ];then #判斷選項參數(shù)是否存在且是目錄 echo "the output path $output not exist" exit fi ;; :) #當(dāng)選項后面沒有參數(shù)時,varname的值被設(shè)置為(:),OPTARG的值被設(shè)置為選項本身 echo "$varname" echo "the option -$OPTARG require an arguement" #提示用戶此選項后面需要一個參數(shù) exit 1 ;; ?) #當(dāng)選項不匹配時,varname的值被設(shè)置為(?),OPTARG的值被設(shè)置為選項本身 echo "$varname" echo "Invaild option: -$OPTARG" #提示用戶此選項無效 Usage exit 2 ;; esac done
關(guān)于怎么在Shell腳本中使用getopts處理多命令行選項就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享名稱:怎么在Shell腳本中使用getopts處理多命令行選項-創(chuàng)新互聯(lián)
瀏覽路徑:http://m.newbst.com/article4/cogeie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站建設(shè)、網(wǎng)站策劃、云服務(wù)器、微信公眾號、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容