十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      介紹Linux中更高級getopts命令的用法

      百恒網絡 2017-09-16 7504

      昨天為大家介紹了getopt 命令的使用方法,今天南昌網絡公司-百恒網絡小編將為大家介紹一種更高級 getopts命令的用法,供大家參考,學習。 getopts命令(注意是復數)內建于bash shell。它跟近親getopt看起來很像,但多了一些擴展功能。

      與getopt不同,前者將命令行上選項和參數處理后只生成一個輸出,而getopts命令能夠和已有的shell參數變量配合默契。

      每次調用它時,它一次只處理命令行上檢測到的一個參數。處理完所有的參數后,它會退出并返回一個大于0的退出狀態碼。這讓它非常適合用解析命令行所有參數的循環中。

      getopts命令的格式如下:

      getopts optstring variable

      optstring值類似于getopt命令中的那個。有效的選項字母都會列在optstring中,如果選項字母要求有個參數值,就加一個冒號。要去掉錯誤消息的話,可以在optstring之前加一個冒號。getopts命令將當前參數保存在命令行中定義的variable中。

      getopts命令會用到兩個環境變量。如果選項需要跟一個參數值,OPTARG環境變量就會保存這個值。OPTIND環境變量保存了參數列表中getopts正在處理的參數位置。這樣你就能在處理完選項之后繼續處理其他命令行參數了。

      下面百恒網絡小編為大家舉個使用getopts命令的例子,大家可以簡單了解一下。

      $ cat test19.sh

      #!/bin/bash

      # simple demonstration of the getopts command

      #

      echo

      while getopts :ab:c opt

      do

      case "$opt" in

      a) echo "Found the -a option" ;;

      b) echo "Found the -b option, with value $OPTARG";;

      c) echo "Found the -c option" ;;

      *) echo "Unknown option: $opt";;

      esac

      done

      $

      $ ./test19.sh -ab test1 -c

      Found the -a option

      Found the -b option, with value test1

      Found the -c option

      $

      while語句定義了getopts命令,指明了要查找哪些命令行選項,以及每次迭代中存儲它們 的變量名(opt)。

      你會注意到在本例中case語句的用法有些不同。getopts命令解析命令行選項時會移除開頭的單破折線,所以在case定義中不用單破折線。

      getopts命令有幾個好用的功能。對新手來說,可以在參數值中包含空格。

      $ ./test19.sh -b "test1 test2" -a

      Found the -b option, with value test1 test2

      Found the -a option

      $

      另一個好用的功能是將選項字母和參數值放在一起使用,而不用加空格。

      $ ./test19.sh -abtest1

      Found the -a option

      Found the -b option, with value test1

      $

      getopts命令能夠從-b選項中正確解析出test1值。除此之外,getopts還能夠將命令行上找到的所有未定義的選項統一輸出成問號。

      $ ./test19.sh -d

      Unknown option: ?

      $

      $ ./test19.sh -acde

      Found the -a option

      Found the -c option

      Unknown option: ?

      Unknown option: ?

      $

      optstring中未定義的選項字母會以問號形式發送給代碼。

      getopts命令知道何時停止處理選項,并將參數留給你處理。在getopts處理每個選項時,它會將OPTIND環境變量值增一。在getopts完成處理時,你可以使用shift命令和OPTIND值來移動參數。

      $ cat test20.sh

      #!/bin/bash

      # Processing options & parameters with getopts

      #

      echo

      while getopts :ab:cd opt

      do

      case "$opt" in

      a) echo "Found the -a option" ;;

      b) echo "Found the -b option, with value $OPTARG" ;;

      c) echo "Found the -c option" ;;

      d) echo "Found the -d option" ;;

      *) echo "Unknown option: $opt" ;;

      esac

      done

      #

      shift $[ $OPTIND - 1 ]

      #

      echo

      count=1

      for param in "$@"

      do

      echo "Parameter $count: $param"

      count=$[ $count + 1 ]

      done

      #

      $

      $ ./test20.sh -a -b test1 -d test2 test3 test4

      Found the -a option

      Found the -b option, with value test1

      Found the -d option

      Parameter 1: test2

      Parameter 2: test3

      Parameter 3: test4

      $

      現在你就擁有了一個能在所有shell腳本中使用的全功能命令行選項和參數處理工具。

      關于更高級的 getopts命令的使用方法,南昌網絡公司-百恒網絡就為大家介紹到這里了,如果還有哪些不太明白的地方,可倒回去再看一遍,或者來電咨詢我們。此外,如有需要網站建設、微信開發、APP開發等方面的服務的朋友,歡迎來電和我們聯系,百恒將隨時為您效勞!

      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      国产揄拍国产精品| 久久久99精品一区二区| 欧美交A欧美精品喷水| 精品人妻系列无码天堂| 国产l精品国产亚洲区在线观看| 国产乱子伦精品无码专区| 四虎精品成人免费视频| 日韩精品无码中文字幕一区二区| 日本三区精品三级在线电影| 亚洲精品伦理熟女国产一区二区 | 国产精品亚洲四区在线观看 | 亚洲精品色播一区二区| 亚洲精品视频久久| 亚洲综合一区二区国产精品| 久久香蕉精品视频| 久久精品国产亚洲AV麻豆~| 在线观看日韩一区| 日韩在线天堂免费观看| 日韩国产免费一区二区三区| 日韩免费在线视频| 日韩免费一区二区三区在线播放| 日韩久久久久久中文人妻| 日韩人妻无码一区二区三区综合部 | 国产精品国产三级国产av中文 | 尹人久久久香蕉精品| 久久精品中文字幕有码| 久久99精品国产麻豆蜜芽| 精品亚洲一区二区三区在线观看 | 精品国产亚洲男女在线线电影 | 精品人妻少妇一区二区| 国产精品一级毛片无码视频| 精品第一国产综合精品蜜芽| 久久91精品综合国产首页| 中文字幕在线视频精品| 天美传媒精品1区2区3区| 97久久国产综合精品女不卡| 亚洲热线99精品视频| 精品亚洲一区二区| 久久99精品国产免费观看| 99国产精品视频久久久久| 91精品视频观看|