Shell: divide ambos si y para el bucle a la vez

Shell: divide ambos si y para el bucle a la vez.

Mi script: ip para nombrar el código de resolución

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 

En el script anterior, la ruptura 2 solo se rompe internamente para no exterior si. Puedo agregar otro si para resolverlo, pero ¿hay alguna otra manera posible?

break no tiene efecto en las declaraciones if . En su caso de uso, return tendrá el efecto que busca, ya que no hay enunciados posteriores al if externo, y return sale de la function.

En C, usaría goto , en Bash todavía no tenemos goto incluso si hubiera una construcción de lenguaje similar, esto se considera dañino .

Entonces hazlo usando otro if .