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條經驗 獲得超2個贊
可以遍歷一下你獲取到的參數列表$@
,具體里面怎么寫就看你,比如最簡單的:
#!/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 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消