欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在Shell腳本中使用getopts處理多命令行選項(xiàng)-創(chuàng)新互聯(lián)

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

為安化等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及安化網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、安化網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

在Linux系統(tǒng)中,許多命令都提供了選項(xiàng),使用不同的選項(xiàng)就會(huì)得到不通的執(zhí)行結(jié)果

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

1.getopts命令的如何使用:

用getopts命令獲取到腳本選項(xiàng)后,getopts會(huì)將獲取到的選項(xiàng)所對(duì)應(yīng)的參數(shù)(選項(xiàng)對(duì)應(yīng)的參數(shù),并不是選項(xiàng)本身,有的命令選項(xiàng)后面是需要跟一個(gè)參數(shù)的,例如tcpdump 的-w選項(xiàng),后面需要指定一個(gè)文件來保存抓包數(shù)據(jù))自動(dòng)保存到OPTARG這個(gè)變量中。

getopts命令格式:getopts   OPTSTRING  VARNAME

  • OPTSTRING:告訴getopts會(huì)有哪些選項(xiàng)和參數(shù)(用選項(xiàng)后面加“:”來表示選項(xiàng)后面需要加參數(shù))

  • VARNAME:保存getopts獲取到的選項(xiàng)

示例:getopts  ahf:   var

告訴getopts查找-a、-h、-f選項(xiàng),其中f選項(xiàng)后面需要跟一個(gè)參數(shù),獲取到的選項(xiàng)都保存到變量var中

getopts命令支持兩種錯(cuò)誤報(bào)告模式,詳細(xì)錯(cuò)誤報(bào)告模式和抑制錯(cuò)誤報(bào)告模式。

在詳細(xì)錯(cuò)誤報(bào)告模式下:如果getopts檢測到一個(gè)無效的選項(xiàng),var的值會(huì)被設(shè)置為(?);如果getopts檢測到一個(gè)后面需要跟參數(shù)的選項(xiàng),后面沒有參數(shù),var的值也會(huì)被設(shè)置為(?)

在抑制錯(cuò)誤報(bào)告模式下:如果getopts檢測到一個(gè)無效的選項(xiàng),var的值會(huì)被設(shè)置為(?),變量OPTARG會(huì)被設(shè)置為這個(gè)無效的選項(xiàng);如果getopts檢測到一個(gè)后面需要跟參數(shù)的選項(xiàng),后面沒有參數(shù),var的值會(huì)被設(shè)置為(:),變量OPTARG會(huì)被設(shè)置為這個(gè)無效的選項(xiàng)

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

示例:

#!/bin/bash
status=off         #定義變量status,初始值設(shè)置為off
filename=""       #定義變量filename,用于保存選項(xiàng)參數(shù)(文件)
output=""         #定義變量output,用于保存選項(xiàng)參數(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四個(gè)選項(xiàng),-f和-o后面需要跟參數(shù)
(沒有選項(xiàng)時(shí),getopts會(huì)設(shè)置一個(gè)退出狀態(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          #將選項(xiàng)的參數(shù)賦值給filename
   if [ ! -f $filename ];then        #判斷選項(xiàng)所跟的參數(shù)是否存在且是文件
     echo "the source file $filename not exist!"
     exit
   fi
   ;;
  o)
   echo "$varname"
   echo "$OPTARG"
   output=$OPTARG           #將選項(xiàng)參數(shù)賦值給output
   if [ ! -d $output ];then        #判斷選項(xiàng)參數(shù)是否存在且是目錄
     echo "the output path $output not exist"
     exit
   fi
   ;;
  :)                        #當(dāng)選項(xiàng)后面沒有參數(shù)時(shí),varname的值被設(shè)置為(:),OPTARG的值被設(shè)置為選項(xiàng)本身
   echo "$varname"
   echo "the option -$OPTARG require an arguement"    #提示用戶此選項(xiàng)后面需要一個(gè)參數(shù)
   exit 1
   ;;
  ?)                  #當(dāng)選項(xiàng)不匹配時(shí),varname的值被設(shè)置為(?),OPTARG的值被設(shè)置為選項(xiàng)本身
   echo "$varname"
   echo "Invaild option: -$OPTARG"      #提示用戶此選項(xiàng)無效
   Usage
   exit 2
   ;;
  esac
done

怎么在Shell腳本中使用getopts處理多命令行選項(xiàng)

怎么在Shell腳本中使用getopts處理多命令行選項(xiàng)

關(guān)于怎么在Shell腳本中使用getopts處理多命令行選項(xiàng)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享名稱:怎么在Shell腳本中使用getopts處理多命令行選項(xiàng)-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article4/cogeie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站建設(shè)、網(wǎng)站策劃云服務(wù)器、微信公眾號(hào)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)