我有5个变量
前任:
a, b, c, d, x,
如果它们不在 1-255 之间(1-32 带 x),则回显错误消息,或者放入随机文本或字符也回显错误消息,我该怎么做
经验:
echo "CIDR:"
read ip
x="$(echo $ip |cut -d "/" -f2)"
a="$(echo $ip |cut -d "." -f1)"
b="$(echo $ip |cut -d "." -f2)"
c="$(echo $ip |cut -d "." -f3)"
d="$(echo $ip |cut -d "." -f4 | cut -d "/" -f1)"
如果 ppl 输入错误的 IP 格式,如1337.-135.abcxyz.!@#@#/12
3,它会打印出错误消息:Error: wrong IP format
...等
答案1
我们可以使用 ipcalc 来验证 IP 地址
来自男人:
ipcalc - perform simple manipulation of IP addresses
例子
ipcalc -cs 192.168.1.1/30 && echo OK || echo NOT_OK
或者
ipcalc -cs "$a.$b.$c.$d/$x" && echo OK || echo NOT_OK
或者
ipcalc -cs "$ip" && echo OK || echo NOT_OK
答案2
你可以使用正则表达式进行 ip 检查,如下所示
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b