Shell: quebra ambos se e for loop de uma só vez

1

Shell: quebra ambos se e for loop de uma só vez.

Meu script: ip para nomear o código de resolução

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

No script acima, quebra 2 só quebra interno para não externo if. Eu posso adicionar outro para resolvê-lo, mas existe alguma outra maneira possível ???

    
por Ram 05.09.2013 / 07:06

2 respostas

5

break não tem efeito nas instruções if . No seu caso de uso, return terá o efeito que você está buscando, pois não há instruções depois que o exterior if e return saem da função.

    
por 05.09.2013 / 08:08
-1

Em C, você usaria goto , no Bash não temos goto no entanto, mesmo que houvesse uma construção de linguagem semelhante, isso é considerado prejudicial .

Então faça isso usando outro if .

    
por 05.09.2013 / 07:50