91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-05-17 15:34:18 來源:億速云 閱讀:144 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在Shell腳本中使用getopts處理多命令行選項,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

在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/bash
status=off         #定義變量status,初始值設置為off
filename=""       #定義變量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
   ;;
  esac
done

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

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

關于怎么在Shell腳本中使用getopts處理多命令行選項就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

个旧市| 宽甸| 北京市| 潜江市| 厦门市| 鹰潭市| 宜丰县| 焉耆| 兴国县| 黎城县| 延川县| 政和县| 延津县| 石河子市| 西华县| 高陵县| 江山市| 四川省| 苗栗市| 金华市| 福泉市| 朝阳县| 开封市| 六盘水市| 城步| 桃园市| 合阳县| 托里县| 灵台县| 桑日县| 平果县| 应城市| 惠安县| 阜城县| 清新县| 崇仁县| 西乌| 三门峡市| 格尔木市| 湖南省| 禄劝|