Shell:同时中断 if 和 for 循环

Shell:同时中断 if 和 for 循环

Shell:同时中断 if 和 for 循环。

我的脚本:ip 到名称解析代码

IP=192.168.27.191
hostNameChecker()
{
    if [ `getent hosts $1 | wc -l` -ne 0 ];then
        HOST_NAME=`hostname`
        DNS_IP=`getent hosts $1 | cut -d " " -f 1 | sed 's/^[ \t]*//;s/[ \t]*$//'`
        DNS_NAMES=`getent hosts $1 | cut -d " " -f 2- | sed 's/^[ \t]*//;s/[ \t]*$//'`
        for DNS_NAME in ${DNS_NAMES[@]} 
        do
            if [[ "$DNS_NAME" == "$HOST_NAME" ]];then
                    echo "Host name:$HOST_NAME and DNS_NAME:$DNS_NAME matched"
                    break 2;########Not working. only brakes inner for not outer if 
                else
                    continue;
                fi
        done
            echo "ERROR: Mismatch between DNS:$DNS_NAMES and Hostname:$HOST_NAME"
            exit 0  
    fi
}
hostNameChecker $IP

在上面的脚本中休息2只打破内部,不打破外部 if。我可以添加另一个 if 来解决它,但是还有其他可能的方法吗???

答案1

breakif对语句没有影响。在您的用例中,将达到您正在寻求的效果,因为在 external和exits 函数return之后没有任何语句。ifreturn

答案2

在 C 中,您可以使用goto,在 Bash 中我们没有goto然而,即使有类似的语言结构,这也是被认为有害

所以使用另一个if.

相关内容