日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
為什么在getopts之后使用shift$((OPTIND-1))?

如果你是一個(gè)Linux系統(tǒng)管理員或者開(kāi)發(fā)人員,那么你一定對(duì)Bash非常熟悉。Bash是一種Unix shell和命令語(yǔ)言,它提供了一些強(qiáng)大的工具來(lái)處理文件、文本和其他類型的數(shù)據(jù)。其中之一就是getopts命令,用于解析腳本中傳入的選項(xiàng)參數(shù)。

高碑店網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)

但是,在使用getopts時(shí),有些人可能會(huì)遇到一個(gè)問(wèn)題:當(dāng)輸入多個(gè)選項(xiàng)參數(shù)時(shí),只有第一個(gè)被正確解析了,而其他的卻無(wú)法識(shí)別。這時(shí)候就需要使用shift $((OPTIND-1))指令來(lái)移動(dòng)位置參數(shù)。

那么為什么要這樣做呢?原因很簡(jiǎn)單:getopts只能解析當(dāng)前位置參數(shù),并將下一個(gè)未知選項(xiàng)留給下次循環(huán)處理。換句話說(shuō),在每次循環(huán)結(jié)束后,getopts都會(huì)使$OPTIND自增1以跳過(guò)已經(jīng)處理過(guò)的選項(xiàng),并將其設(shè)置為下一個(gè)待處理選項(xiàng)所在位置。

因此,在while循環(huán)中進(jìn)行完所有操作后,我們需要手動(dòng)將$OPTIND重置回2(即第二個(gè)位置參數(shù)),然后再通過(guò)shift指令移除已經(jīng)處理過(guò)的所有選項(xiàng)及其值。這樣可以確保接下來(lái)的程序不會(huì)誤認(rèn)為剩余部分還包含前面已經(jīng)解析過(guò)的選項(xiàng)。

下面是一個(gè)示例腳本,演示了如何在getopts之后使用shift $((OPTIND-1))指令:

```bash

#!/bin/bash

while getopts ":a:b:c:" opt; do

case $opt in

a) arg_a="$OPTARG"

;;

b) arg_b="$OPTARG"

c) arg_c="$OPTARG"

\?) echo "Invalid option -$OPTARG" >&2

exit 1

esac

done

# 移除已處理參數(shù)并將位置指針重置到第二個(gè)參數(shù)位置

shift $((OPTIND-1))

OPTIND=2

echo "arg_a=$arg_a, arg_b=$arg_b, arg_c=$arg_c"

# 處理剩余的無(wú)關(guān)參數(shù)

for i in "$@"; do

echo "Extra parameter: $i"

done

```

以上代碼中,在while循環(huán)結(jié)束后,我們通過(guò)shift和$((OPTIND-1))移除了所有已經(jīng)解析過(guò)的選項(xiàng)。然后,我們手動(dòng)將$OPTIND設(shè)置為2,并開(kāi)始處理剩余的未知參數(shù)。

總結(jié)一下:當(dāng)你需要在Bash腳本中使用getopts命令來(lái)解析多個(gè)選項(xiàng)時(shí),請(qǐng)記得在循環(huán)結(jié)束后使用shift和$((OPTIND-1))來(lái)移除所有已經(jīng)解析過(guò)的選項(xiàng)及其值,并將位置指針重置回第二個(gè)參數(shù)位置。這樣可以確保接下來(lái)程序不會(huì)誤認(rèn)為剩余部分還包含前面已經(jīng)解析過(guò)的選項(xiàng)。


文章標(biāo)題:為什么在getopts之后使用shift$((OPTIND-1))?
本文URL:http://www.5511xx.com/article/dhgepie.html