shell 判断字符串是不是IP

2026年09月23日 00:48
有3个网友回答
网友(1):

#!/bin/bash
ip='123.123.123.1231'
#ip='123.123.123.131'
echo $ip | perl -ne 'exit 1 unless /\b(?:(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))\b/'
if [ $? -eq 1 ]
then
echo "Invalid Ip"
else
echo "Ip is $ip"
fi

网友(2):

string="你的字符串"
echo $string|egrep -q '([0-9]+.){3}[0-9]+' #这里并非严格意义上的判断
if [ $? -eq 0 ]; then
echo "$string is an IP address."
else
echo "$string is NOT an IP address."
fi

更严格的判断,参见下面这个链接。

网友(3):

可以通过正则表达式进行判断:
#!/bin/bash
ip='111.111.111.111'
#ip='111.111.111.111'
echo $ip | perl -ne 'exit 1 unless /\b(?:(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5]))\b/'
if [ $? -eq 1 ]
then
echo "true"
else
echo "false"
fi