2012-09-03 86 views
0

任何人都可以解釋我如何使$ 2 & $ 3這些NUM1 & NUM2這樣我就可以改變我的平式的開始和結束號碼是多少?沒有改變我的配方中的任何東西用變量做變量?

num1=1 
num2=255 

until [ -z $1 ] 

    case in "$1" in 

       a) $2="$num1" 
        $3="$num2" ;; 
    [0-9]*-[0-9]*) $num1=${1%-*} 
        $num2=${1#*-} 

    esac 
done 

for ip in $(seq $num1 $num2); do 
    ping -c 1 -w 1 192.168.1.$ip>/dev/null; && eho "192.168.1.$ip is up" ||:; 
done 
+1

您的最終'for'迴路單獨錯誤。命令應該以';'或'&&/||'結尾,而不是兩個。正確的行是'ping ...>/dev/null && echo「...」|| :'。 (雖然沒有必要爲最終'||:',它可以消除 – chepner

回答

0

查找間接在bash手冊中。不明顯,!引入變量間接。

$ a=hello 
$ var=a 
$ echo ${!var} 
hello 

編輯

num1=1 
num2=255 
case in "$1" in 
a) 
    num1=$2; 
    num2=$3 
    ;; 
[0-9]*-[0-9]*) 
    num1=${1%-*} 
    num2=${1#*-} 
    ;; 
esac 

for ip in $(seq $num1 $num2); do 
    ping -c 1 -w 1 192.168.1.$ip>/dev/null && echo "192.168.1.$ip is up" ||:; 
done 
+0

我不想無禮,但可能與我的例子去嘗試不改變配方 – mrName

+0

@meName:嗯,OK,看編輯。 – bobbogo

+0

啊!對不起,我發現我的解決方案,非常感謝你bobbogo – mrName