第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

慕哥9229398 2023-04-14 18:14:58
Linux的參數(shù)好多都是可以通過參數(shù)名空格參數(shù)值這種方式傳參的,比如find . -name *.php貌似Shell不提供這種方式,只能通過 $數(shù)字 的方式
查看完整描述

2 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個贊

你可以自行解析$@參數(shù)實(shí)現(xiàn)解析。但是實(shí)際情況比這復(fù)雜。比如說,如果我需要一個-name test的帶參數(shù)選項(xiàng),直接遍歷$@的代碼就很復(fù)雜了。

正常一點(diǎn)的解決方案是用bash的built-in getopts或者命令getopt(注意這倆名字不一樣)。

我把里面的樣例代碼貼這里。你可以將這部分代碼保存成腳本然后執(zhí)行之測試效果

# getopts :s:h表示這個命令接受2個帶參數(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


查看完整回答
反對 回復(fù) 2023-04-17
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個贊

可以遍歷一下你獲取到的參數(shù)列表$@,具體里面怎么寫就看你,比如最簡單的:

#!/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 $@


查看完整回答
反對 回復(fù) 2023-04-17
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號