亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我自己寫的Shell腳本,也想通過這種方式傳參,怎么處理呢?

我自己寫的Shell腳本,也想通過這種方式傳參,怎么處理呢?

慕哥9229398 2023-04-14 18:14:58
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


查看完整回答
反對 回復 2023-04-17
?
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 $@


查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號