Linux的參數好多都是可以通過參數名空格參數值這種方式傳參的,比如find . -name *.php貌似Shell不提供這種方式,只能通過 $數字 的方式
2 回答
蕭十郎
TA貢獻1815條經驗 獲得超13個贊
你可以自行解析$@參數實現解析。但是實際情況比這復雜。比如說,如果我需要一個-name test的帶參數選項,直接遍歷$@的代碼就很復雜了。
正常一點的解決方案是用bash的built-in getopts或者命令getopt(注意這倆名字不一樣)。
我把里面的樣例代碼貼這里。你可以將這部分代碼保存成腳本然后執行之測試效果
# getopts :s:h表示這個命令接受2個帶參數選項,分別是-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貢獻1820條經驗 獲得超3個贊
可以遍歷一下你獲取到的參數列表$@,具體里面怎么寫就看你,比如最簡單的:
#!/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 $@- 2 回答
- 0 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消
