国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

Shell腳本中使用getopts處理多命令行選項

2020-07-27 18:45:45
字體:
來源:轉載
供稿:網友

在Linux系統中,許多命令都提供了選項,使用不同的選項就會得到不通的執行結果

例如:ls命令,ls命令提供了多個選項:-l、-a、-A、-h、-i等等,每個選項具有不同的功能,我們自己寫腳本時也可以定義選項,提示用戶如何使用,本文介紹如何使用getopts命令來處理命令選項。

1.getopts命令的如何使用:

用getopts命令獲取到腳本選項后,getopts會將獲取到的選項所對應的參數(選項對應的參數,并不是選項本身,有的命令選項后面是需要跟一個參數的,例如tcpdump 的-w選項,后面需要指定一個文件來保存抓包數據)自動保存到OPTARG這個變量中。

getopts命令格式:getopts   OPTSTRING  VARNAME

  • OPTSTRING:告訴getopts會有哪些選項和參數(用選項后面加“:”來表示選項后面需要加參數)
  • VARNAME:保存getopts獲取到的選項

示例:getopts  ahf:   var

告訴getopts查找-a、-h、-f選項,其中f選項后面需要跟一個參數,獲取到的選項都保存到變量var中

getopts命令支持兩種錯誤報告模式,詳細錯誤報告模式和抑制錯誤報告模式。

在詳細錯誤報告模式下:如果getopts檢測到一個無效的選項,var的值會被設置為(?);如果getopts檢測到一個后面需要跟參數的選項,后面沒有參數,var的值也會被設置為(?)

在抑制錯誤報告模式下:如果getopts檢測到一個無效的選項,var的值會被設置為(?),變量OPTARG會被設置為這個無效的選項;如果getopts檢測到一個后面需要跟參數的選項,后面沒有參數,var的值會被設置為(:),變量OPTARG會被設置為這個無效的選項

2.通過腳本來講解getopts如何獲取選項,如何賦值給變量VARNAME和OPTSTRING:

示例:

#!/bin/bashstatus=off         #定義變量status,初始值設置為offfilename=""       #定義變量filename,用于保存選項參數(文件)output=""         #定義變量output,用于保存選項參數(目錄)Usage () {         #定義函數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后面需要跟參數(沒有選項時,getopts會設置一個退出狀態FALSE,退出循環)do  case $varname in  h)   echo "$varname"   Usage   exit   ;;  v)   echo "$varname"   status=on   echo "$status"   exit   ;;  f)   echo "$varname"   echo "$OPTARG"   filename=$OPTARG          #將選項的參數賦值給filename   if [ ! -f $filename ];then        #判斷選項所跟的參數是否存在且是文件     echo "the source file $filename not exist!"     exit   fi   ;;  o)   echo "$varname"   echo "$OPTARG"   output=$OPTARG           #將選項參數賦值給output   if [ ! -d $output ];then        #判斷選項參數是否存在且是目錄     echo "the output path $output not exist"     exit   fi   ;;  :)                        #當選項后面沒有參數時,varname的值被設置為(:),OPTARG的值被設置為選項本身   echo "$varname"   echo "the option -$OPTARG require an arguement"    #提示用戶此選項后面需要一個參數   exit 1   ;;  ?)                  #當選項不匹配時,varname的值被設置為(?),OPTARG的值被設置為選項本身   echo "$varname"   echo "Invaild option: -$OPTARG"      #提示用戶此選項無效   Usage   exit 2   ;;  esacdone

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 含山县| 红河县| 嘉义县| 革吉县| 墨脱县| 浦江县| 治县。| 从江县| 麻江县| 崇信县| 丰台区| 中西区| 大连市| 堆龙德庆县| 新密市| 宜良县| 昭觉县| 新余市| 佛学| 瑞丽市| 彰武县| 峡江县| 玉屏| 姜堰市| 潞西市| 大方县| 商南县| 绿春县| 潍坊市| 长泰县| 石台县| 长治县| 历史| 海南省| 淮北市| 同仁县| 临朐县| 潜山县| 霍州市| 泰来县| 昌图县|