av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

為什么在getopts之后使用shift$((OPTIND-1))?

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

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

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

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

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

下面是一個示例腳本,演示了如何在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ù)并將位置指針重置到第二個參數(shù)位置

shift $((OPTIND-1))

OPTIND=2

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

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

for i in "$@"; do

echo "Extra parameter: $i"

done

```

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

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


網(wǎng)頁標題:為什么在getopts之后使用shift$((OPTIND-1))?
網(wǎng)頁網(wǎng)址:http://uogjgqi.cn/article/dhgepie.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流