#判断IP是否符合标准规则 function judge_ip(){ #这里local $1出错,用2>/dev/null屏蔽掉错误,暂未发现影响输出结果 local $1 2>/dev/null TMP_TXT=/tmp/iptmp.txt echo $1 > ${TMP_TXT} IPADDR=`grep -Eo ‘([0-9]{1,3}\.){3}[0-9]{1,3}‘ ${TMP_TXT}` #判断有没有符合***.***.***.***规则的IP if [ ! -z "${IPADDR}" ];then local j=0; #通过循环来检测每个点之前的数值是否符合要求 for ((i=1;i<=4;i++)) do local IP_NUM=`echo "${IPADDR}" |awk -F. "{print $"$i"}"` #判断IP_NUM是否在0与255之间 if [ "${IP_NUM}" -ge 0 -a "${IP_NUM}" -le 255 ];then ((j++)); else return 1 fi done #通过j的值来确定是否继续匹配规则,循环四次,若都正确j=4. if [ "$j" -eq 4 ];then #确认是否为自己想要输入的IP地址 read -n 1 -p "你输入的IP是${IPADDR},确认输入:Y|y;重新输入:R|r:" OK case ${OK} in Y|y) return 0;; R|r) return 1;; *) return 1;; esac else return 1 fi else return 1 fi }
调用方法:
read -p "想要设置的IP示例为“192.168.1.1”,请输入:" IPADDRS judge_ip "${IPADDRS}"; i=`echo $?` #循环直到输入正确的IP为止 until [ "$i" -eq 0 ];do echo -e "\033[31m你输入了错误的IP:${IPADDRS} ====>>>>\033[0m" read -p "重新输入IP,示例“192.168.1.1”,请输入:" IPADDRS judge_ip "${IPADDRS}"; i=`echo $?` done
本文出自 “上山路十八弯” 博客,请务必保留此出处http://kongzi68.blog.51cto.com/1432619/1644013
原文地址:http://kongzi68.blog.51cto.com/1432619/1644013