成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Shell腳本中關于getopts的使用方法

運維 系統運維
今天主要介紹一下怎么用getopts工具完善腳本命令行參數。下面,我們一起來看。

今天主要介紹一下怎么用getopts工具完善腳本命令行參數。

[[281661]]

1. getops

getopts是一個解析腳本選項參數的工具。

(1) 語法格式:getopts [option[:]] [DESCPRITION] VARIABLE

(2) option:表示為某個腳本可以使用的選項.

(3) ":":如果某個選項(option)后面出現了冒號(":"),則表示這個選項后面可以接參數(即一段描述信息DESCPRITION)

(4) VARIABLE:表示將某個選項保存在變量VARIABLE中

getopts是linux系統中的一個內置變量,一般用在循環中。每當執行循環是,getopts都會檢查下一個命令選項,如果這些選項出現在option中,則表示是合法選項,否則不是合法選項。并將這些合法選項保存在VARIABLE這個變量中。

getopts還包含兩個內置變量,及OPTARG和OPTIND:

  • OPTARG就是將選項后面的參數(或者描述信息DESCPRITION)保存在這個變量當中。
  • OPTIND:這個表示命令行的下一個選項或參數的索引(文件名不算選項或參數)

初次使用要注意這幾點:

  • 腳本位置參數會與optstring中的單個字母逐個匹配,如果匹配到就賦值給name,否則賦值name為問號;
  • optstring中單個字母是一個選項,如果字母后面加冒號,表示該選項后面帶參數,參數值并會賦值給OPTARG變量;
  • optstring中第一個是冒號,表示屏蔽系統錯誤(test.sh: illegal option -- h);
  • 允許把選項放一起,例如-ab

2. 實驗

(1) getops參數簡單使用

  1. #!/bin/bash 
  2. while getopts ':b:d:' OPT &> /dev/null;do 
  3.  case $OPT in 
  4.  b) 
  5.  echo "The options is b" 
  6.  echo $OPTARG ;; 
  7.  d) 
  8.  echo "The options is d" 
  9.  echo $OPTARG ;; 
  10.  *) 
  11.  echo "Wrong Options" 
  12.  exit 7 ;; 
  13.  esac 
  14. # echo $OPT 
  15. # echo $OPTARG 
  16. done 
  17. echo $OPTIND 
  18. shift $[$OPTIND-1] 
  19. echo $1 

詳解shell腳本中關于getopts的使用方法

執行結果:

  1. ./getopts1.sh -d 'nice' fixnale 

詳解shell腳本中關于getopts的使用方法

說明:

當輸入-d時,$OPT=d,$OPTARG='nice',因此就會顯示d)...這一部分的信息。

由于這里有一個選項(-d)和一個參數('nice'),$OPTIND指向命令行中下一個選項或參數的索引位置,因此這里即為3。

shift $[$OPTIND-1]表示將文件名前面的選項和參數踢掉.

(2) getops參數進一步使用

  1. #!/bin/bash 
  2. echo $* 
  3. while getopts ":a:bc:" opt 
  4. do 
  5.  case $opt in 
  6.  a) 
  7.  echo $OPTARG $OPTIND;; 
  8.  b) 
  9.  echo "b $OPTIND";; 
  10.  c) 
  11.  echo "c $OPTIND";; 
  12.  ?) 
  13.  echo "error" 
  14.  exit 1;; 
  15.  esac 
  16. done 
  17. echo $OPTIND 
  18. shift $(( $OPTIND-1 )) 
  19. echo $0 
  20. echo $* 

詳解shell腳本中關于getopts的使用方法

執行結果:

  1. ./getopts2.sh -a 11 -b -c 6 

詳解shell腳本中關于getopts的使用方法

說明:

while getopts ":a:bc:" opt #第一個冒號表示忽略錯誤;字符后面的冒號表示該選項必須有自己的參數。

  • $optarg 存儲相應選項的參數,如上例中的11、6;
  • $optind 總是存儲原始$*中下一個要處理的選項(不是參數,而是選項,此處指的是a,b,c這三個選項,而不是那些數字,當然數字也是會占有位置的)位置。

optind初值為1,遇到"x",選項不帶參數,optind+=1;遇到"x:",帶參數的選項,optarg=argv[optind+1],optind+=2;遇到"x::",可選參數,屬于#1和#2之一。

  • 第一行輸出echo $*
  • 第二行,optind初值為1,選項-a的參數為11,下一個要處理的選項-b位置為3,所以輸出:11 3;
  • 第三行,然后-b要處理的下一個選項-c位置為4,所以輸出:b 4;
  • 第四行,再者-c有參數,所以下一個要處理的位置+2,所以輸出:c 6; 

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2011-07-12 17:11:13

PHPSHELL

2010-10-09 10:30:03

JS event

2011-02-14 10:21:04

Windows PowWMI

2011-08-08 14:07:49

iPhone開發 字體

2009-12-02 16:04:44

PHP fsockop

2009-06-29 17:57:30

ApplicationJSP

2011-06-16 11:01:56

PHP繼承

2009-12-28 13:28:03

WPF視頻

2012-05-10 10:53:10

Linuxhistory

2009-06-08 20:07:44

Eclipse中使用p

2023-06-28 08:34:02

Bind()函數JavaScript

2009-08-25 16:54:28

C# RichText

2009-11-30 17:43:54

PHP split()

2009-11-24 09:26:31

pbr策略路由

2012-05-09 10:52:37

Linux監控命令

2023-05-11 08:00:44

Golangsync.Pool

2010-06-01 19:55:30

SVN使用

2010-06-03 17:38:03

Hadoop命令

2010-01-28 17:07:03

Android Gal

2009-11-16 16:54:00

PHP構造函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女深夜网站 | 久久免费视频1 | 欧美精品久久久 | 亚洲一区二区三区久久久 | 九九热re| 国产91精品久久久久久久网曝门 | 香蕉视频一区二区 | 九一在线观看 | 成人免费一区二区三区视频网站 | 欧美精品在欧美一区二区 | 国产精品久久久久婷婷二区次 | 久久久久一区二区三区 | 91精品国产91 | 伊人网站 | 日韩av在线免费 | 成av在线 | 免费观看国产视频在线 | 91精品国产91久久久久久 | 欧美日韩a| 久久久性色精品国产免费观看 | www.国产| 国产色婷婷精品综合在线播放 | 国产精品一区一区三区 | 日韩a级片 | 久久不卡区| 亚洲精品久久久一区二区三区 | 日日夜夜精品免费视频 | 青青草在线播放 | 欧美91 | 黑人性hd | 亚洲欧洲av在线 | 欧美久久国产 | 亚洲精品在线国产 | 欧美不卡网站 | 免费国产视频在线观看 | 91免费视频观看 | 精品成人一区二区 | 99久久日韩精品免费热麻豆美女 | 黄色成人免费看 | 成人欧美一区二区三区黑人孕妇 | 嫩草视频入口 |