从imbricated for循环中脱离

时间:2015-05-04 12:44:16

标签: bash shell ash

我想知道是否有办法留下imbricated 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
}

感谢任何帮助

2 个答案:

答案 0 :(得分:4)

break接受一个参数,该参数指定要破坏的周围循环的级别数;在你的情况下,我相信它将是3:

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

答案 1 :(得分:2)

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

  

普通断点仅终止嵌入它的最内层循环,但断点N突破N级循环。

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

break 3