Shell判断ip地址类型
问题
最近的给 ss 插件添加一个新特性,需要用shell判断ip地址类型,想到了大概思路是用正则表达式,但是正则表达式你也懂的,只好 Google 了,在 Stack Overflow上找到了正解。记录之
Code
#!/bin/sh
if [ "$1" != "${1#*[0-9].[0-9]}" ]; then
echo IPv4
elif [ "$1" != "${1#*:[0-9a-fA-F]}" ]; then
echo IPv6
else
echo "Unrecognized IP format '$1'"
fi
限制
root@Hiwifi:~# /tmp/test.sh 256.256.256.25aa
IPv4
root@Hiwifi:~# /tmp/test.sh 256.256.256.aaaa
IPv4
root@Hiwifi:~# /tmp/test.sh 1:1
IPv6
在我的代码里可以保证$1为 IPv4 、IPv6 、域名 其中的一种,所以这个方法适合我,但是不一定适合你的代码(比如需要精确校验ip是否合法的场合)。
Reference
EOF
评论框君很顽皮,需要科学上网才能看到哦!~
关注微信公众号(MarIxs)也能联系到我哦!