在bash for循环中指定多个条件

时间:2013-03-21 16:39:03

标签: arrays bash shell loops for-loop

所以我想在我的bash脚本中传递一个for循环,我希望它根据两个参数停止:

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

我的目的是让这个循环回显50连续数组值[0] - [50],但是如果$ array_position在所有50个循环迭代完成之前到达数组的末尾,则停止。

任何帮助都一如既往地受到赞赏!

2 个答案:

答案 0 :(得分:1)

问题在于-a声明中的-ltfor。将其更改为:

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

或者进一步简化整个事情:

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

答案 1 :(得分:0)

您只需要指定数组大小作为测试,如果达到50则使用break语句:

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