Linux的參數(shù)好多都是可以通過參數(shù)名空格參數(shù)值這種方式傳參的,比如find . -name *.php貌似Shell不提供這種方式,只能通過 $數(shù)字 的方式
2 回答
蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
你可以自行解析$@參數(shù)實(shí)現(xiàn)解析。但是實(shí)際情況比這復(fù)雜。比如說,如果我需要一個(gè)-name test的帶參數(shù)選項(xiàng),直接遍歷$@的代碼就很復(fù)雜了。
正常一點(diǎn)的解決方案是用bash的built-in getopts或者命令getopt(注意這倆名字不一樣)。
我把里面的樣例代碼貼這里。你可以將這部分代碼保存成腳本然后執(zhí)行之測(cè)試效果
# getopts :s:h表示這個(gè)命令接受2個(gè)帶參數(shù)選項(xiàng),分別是-h和-swhile getopts :s:h optdo case $opt in s) echo "-s=$OPTARG" ;; :) echo "-$OPTARG needs an argument" ;; h) echo "-h is set" ;; *) echo "-$opt not recognized" ;; esacdone
DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
可以遍歷一下你獲取到的參數(shù)列表$@,具體里面怎么寫就看你,比如最簡(jiǎn)單的:
#!/bin/bashfunction getName() {
found=0; for item in $@ ; do
if [[ $found == 1 ]]; then
echo $item;
found=0; break; fi
if [[ "$item" == "-name" ]]; then
found=1; fi
done}
getName $@添加回答
舉報(bào)
0/150
提交
取消
