2013-03-21 50 views
0

所以,我想通過一個在我的bash腳本循環,我想這取決於停止對兩個參數:指定多個條件在bash for循環

for ((x=1; x<= 50 -a $array_position -lt ${#array[@]}; x++)) 
do 
    echo ${array[$array_position]} 
    array_position=$((array_position+1)) 
done 

我的目的就是有這個for循環回聲50個連續的數組值[0] - [50],但是如果$ array_position在所有50個循環迭代完成之前到達數組的末尾,則停止。

任何幫助一如既往的讚賞!

回答

1

的問題是在你的for聲明-a-lt。它改成這樣:

for ((x=1; x<= 50 && $array_position < ${#array[@]}; x++)) 

以及簡化整個事情進一步:

for ((x=0; x < 50 && x < ${#array[@]}; x++)) 
do 
    echo "${array[$x]}" 
done 
+0

這很好,並解決了我傳遞多個參數的問題。謝謝! – jake9115 2013-03-21 17:16:27

0

如果達到50您應該只需要指定數組的大小爲您的測試,並使用break語句:

for ((x=1; x<=${#array[@]}; x++)) 
do 
    echo ${array[$array_position]} 
    array_position=$((array_position+1)) 
    [ $x -eq 50 ] && break 
done 
+0

我同意這是一個好主意,但我希望能夠通過多種參數以供將來使用 – jake9115 2013-03-21 17:15:33

+0

dogbanes的解決方案在我看來更好 – fpmurphy1 2013-03-21 18:15:34

+0

是的 - 這是如此糟糕,它值得downvote? :( – 2013-03-21 19:14:14