2012-05-27 28 views
0

我有一個數組中有一些字符串,並希望對每個字符串做一些工作。我還以爲一個簡單的for循環的工作,但,這是造成嚴重的問題:如何讓bash數組在我遍歷它們時運行?

for list in $valarr 
do 

    for word in ${valarr[j]} 
    do 
    #echo word: $word 
    if [ $i -ge $f ] && [ $i -le $t ]; then 
     echo -e -n "$word\t" 
    fi 
    i=`expr $i + 1` 
    done 
    echo $j ${#valarr[@]} 
    i=0 
    j=`expr $j + 1` 
done 

正如你可以看到我有兩個循環。嵌套在裏面的是做我需要做的工作(並且工作正常),但是外部for循環認爲它具有的元素的數量是其第一個元素(字符串)中的字數。結構上我真正想要做的是這樣的:

for each string in an array: 
    for each word in the string: 
     do some work 
    done 
done 

爲什麼慶典這樣的表現,我怎麼能做到什麼,我需要做什麼? (道歉,順便說一句,對於透明度或格式化的任何問題)通過一個這樣的數組

回答

1

您循環:

for var in "${valarr[@]}" 

的[@]是重要的;裸$arrayName${arrayName[0]}相同。這就是爲什麼你的循環循環你的第一個元素中的單詞。

+0

謝謝你,馬克。現在它運行得更好。 :) – user1419715