干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

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

百恒網(wǎng)絡(luò) 2017-09-16 7122

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

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

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

getopts命令的格式如下:

getopts optstring variable

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

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

下面百恒網(wǎng)絡(luò)小編為大家舉個使用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命令有幾個好用的功能。對新手來說,可以在參數(shù)值中包含空格。

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

Found the -b option, with value test1 test2

Found the -a option

$

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

$ ./test19.sh -abtest1

Found the -a option

Found the -b option, with value test1

$

getopts命令能夠從-b選項中正確解析出test1值。除此之外,getopts還能夠?qū)⒚钚猩险业降乃形炊x的選項統(tǒng)一輸出成問號。

$ ./test19.sh -d

Unknown option: ?

$

$ ./test19.sh -acde

Found the -a option

Found the -c option

Unknown option: ?

Unknown option: ?

$

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

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

$ 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

$

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

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

400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

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

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×