【问题标题】:Break from imbricated for loop从叠瓦状for循环中中断
【发布时间】:2015-05-04 12:44:15
【问题描述】:

我想知道是否有办法让 for 循环离开:

check_mac_address() {
    local mac="$1"
    for wunit in `get_wunit`; do
        for iuc in `get_iuc`; do            
            for assoc_mac in `get_iuc $wunit $iuc`;do
                if [ "$assoc_mac" = "$mac"]; then 
                    local int_type="WF" 
                    break #---> break from all loop  
                else
                    int_type="ETH"
                    break #---> break from all loop  
                fi 
            done
        done
    done
}

感谢任何帮助

【问题讨论】:

  • TIL:“叠瓦”是一个词。 “嵌套”是此构造的常用术语。

标签: bash shell ash


【解决方案1】:

break 接受一个参数,该参数指定要中断多少级周围循环;在你的情况下,我相信它会是 3:

http://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins

【讨论】:

    【解决方案2】:

    来自http://tldp.org/LDP/abs/html/loopcontrol.html

    一个普通的 break 只会终止它所嵌入的最内层循环,但一个 break N 会从 N 级循环中跳出。

    所以在你的情况下,你可以打破所有三个循环

    break 3
    

    【讨论】:

    • bash 参考手册或适当的 POSIX 规范的链接比 TLDP bash 指南更有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多