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
上記のスクリプトでは休憩2ifは外部ではなく内部のみを破壊します。問題を解決するために別のifを追加することができますが、他の可能な方法はありますか? ? ?
答え1
break
if
文には影響しません。ユースケースでは、return
外部機能と終了機能の後にステートメントがないため、目的の効果を得ることができます。if
return