2013-06-25 64 views
1

我有一個使用命令行參數使用getopt的shell腳本。我的腳本的這一部分很好,但是,我需要一個特殊情況,可以多次提交一個特定的參數。如何訪問數組的成員?

下面是我如何處理它的JIST:

#!/bin/sh 

i=0 

# once in the case statement I do the following: 
while true 
do 
    case "$1" in 

    -p) 
     paramList[$i]=$2 
     ((i++)) 
     shift 2 
     ;; 
done 

這是正確填充paramList陣列(我認爲),但每當我嘗試以下方法:

for param in $paramList 
do 
    echo "Params: $param" 
done 

它只返回第一個參數。所以如果我做./myscript -p blah -p blah2 -p blah3它只是返回blah

我在做什麼錯?

回答

1

在你case聲明,你可以簡單地添加到像這樣的數組:

-p) 
    paramList+=("$2") 
    shift 2 
    ;; 

沒有必要的索引。

爲了迭代這個數組:

for param in "${paramList[@]}" 
do 
    echo "Params: $param" 
done 
+0

這工作!萬分感謝。 –

1

你可以通過這樣簡單的創建一個數組:

paramList=("[email protected]") 

然後你可以在他們做迭代:

for param in "${paramList[@]}" 
do 
    echo "Params: $param" 
done 
+0

謝謝。這給了我太多的信息。我只想在轉換之後的參數。我把整個循環。 –