【问题标题】:Specifying multiple conditions in bash for loop在 bash for 循环中指定多个条件
【发布时间】:2013-03-21 16:39:02
【问题描述】:

所以我想在我的 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 个循环迭代完成之前到达数组末尾,则停止。

一如既往地感谢任何帮助!

【问题讨论】:

    标签: arrays bash shell loops for-loop


    【解决方案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
    

    【讨论】:

    • 这很好,解决了我传递多个参数的问题。谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 我同意这是个好主意,但我希望能够传递多个参数以供将来使用
    • 我认为dogbanes的解决方案更好
    猜你喜欢
    • 2012-08-04
    • 2020-04-10
    • 2020-08-21
    • 2023-04-06
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多