新聞中心
linux不定參數(shù)的處理在Linux系統(tǒng)中,經(jīng)常會(huì)有一些強(qiáng)大的功能是要求我們指定不定參數(shù),例如傳遞變量去執(zhí)行一個(gè)命令。

成都創(chuàng)新互聯(lián)公司為客戶提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。
同時(shí),Linux中擁有很多種不同的方式處理不定參數(shù),這些都可以幫助開發(fā)者快速且安全地完成開發(fā)任務(wù)。
其中,bash shell腳本最常見的處理不定參數(shù)的方式是使用“shift”命令:
#!/bin/bash
n=$1
shift
while [ $n -gt 0 ]; do
echo “First argument: $1”
shift
n=$(( n – 1 ))
done
腳本的功能是將所有傳入的參數(shù)逐個(gè)打印出來(lái)。首先,“$1”變量存儲(chǔ)第一個(gè)參數(shù)的值,“shift”命令用于移動(dòng)參數(shù)位置,并將之前的參數(shù)出棧。
最后,“n”做循環(huán)計(jì)數(shù),當(dāng)它減為零時(shí),循環(huán)就會(huì)結(jié)束。
此外,shell腳本還支持使用“while”、“for”、“case”語(yǔ)句處理不定參數(shù)。例如,使用while腳本來(lái)執(zhí)行任務(wù):
#!/bin/bash
while [ -n “$1” ]
do
case “$1” in
-e) echo “Option specified: -e”;;
-t) echo “Option specified: -t”;;
-h) echo “Option specified: -h”;;
*) echo “$1 is not an option”;;
esac
shift
done
這段腳本實(shí)現(xiàn)的是針對(duì)不同的參數(shù)進(jìn)行相應(yīng)的處理動(dòng)作。首先,while語(yǔ)句會(huì)一直循環(huán):當(dāng)“$1”變量不為空,則繼續(xù)進(jìn)入case語(yǔ)句,根據(jù)不同的參數(shù)執(zhí)行不同的操作;后續(xù)的shift命令用于移動(dòng)參數(shù)位置,并將之前的參數(shù)出棧。
最后,Linux系統(tǒng)中可以使用getopts來(lái)處理不定參數(shù),甚至可以提供帶有參數(shù)含義的命令參數(shù):
#!/bin/bash
while getopts ‘e:t:h:’ opts
do
case $opts in
e) echo “Option e set to $OPTARG”;;
t) echo “Option t set to $OPTARG”;;
h) echo “Option h set to $OPTARG”;;
*) echo “invalid args” && exit 1 ;;
esac
done
這段腳本將在命令行中指定參數(shù): “-e”、“-t”以及“-h”,并將他們?cè)O(shè)置到“$OPTARG”變量中,而case語(yǔ)句做出不同的處理。
總而言之,Linux系統(tǒng)中有許多強(qiáng)大的功能用于處理不定參數(shù),包括shift、while、for、case以及getopts等,這些都有助于提高腳本的可讀性和效率,實(shí)現(xiàn)強(qiáng)大靈活的參數(shù)處理程序。
香港云服務(wù)器機(jī)房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
文章名稱:Linux不定參數(shù)處理簡(jiǎn)潔而強(qiáng)大(linux不定參數(shù))
路徑分享:http://www.dlmjj.cn/article/cdhcdsi.html


咨詢
建站咨詢
