佟季爰
2025-05-01 16:21:34呆了,这个问题,我印象里应该是几年前在某个论坛上遇到的,具体时间忘了,不过那会儿的讨论还挺热闹的。
嘛,壳(Shell)脚本里判断IP地址合法,其实挺简单的。你可以用正则表达式来验证。
比如,你可以用下面的脚本:
shell
!/bin/bash
# 假设有一个IP地址变量
IP="192.168.1.1"
# 使用正则表达式检查IP地址格式 if [[ $IP =~ ^[0-9]+.[0-9]+.[0-9]+.[0-9]+$ ]]; then
分割IP地址,每部分都要在0-255之间
OIFS=$IFS IFS='.' IP=($IP) IFS=$OIFS<br> # 检查每个数字是否在0-255之间 for num in "${IP[@]}"; do if ! [[ $num =~ ^[0-9]+$ ]] || [ $num -lt 0 ] || [ $num -gt 255 ]; then echo "IP地址不合法" exit 1 fi done<br> echo "IP地址合法" else echo "IP地址格式不正确" fi
当时我也没想明白怎么用正则表达式来匹配,后来查了查资料,发现其实正则表达式挺强大的。这个脚本我大概用了两次,一次是在2015年的一个项目里,另一次是2018年一个论坛上有人问,我就随便分享了一下。
说实话,这事儿说起来简单,但是实际操作起来还是得细心。毕竟IP地址这玩意儿,用的人多了,就容易出错。😂
201
愚叔怀
2025-12-20 16:05:30直接上代码:
bash
!/bin/bash
# 输入IP地址
IP=$1
# 判断IP是否合法 if [[ $IP =~ ^[0-9]+.[0-9]+.[0-9]+.[0-9]+$ ]]; then
分割IP地址
OIFS=$IFS IFS='.' IP=($IP) IFS=$OIFS<br> # 判断每个段是否在0-255之间 for SEGMENT in "${IP[@]}"; do if [ "$SEGMENT" -lt 0 ] || [ "$SEGMENT" -gt 255 ]; then echo "时间:2023年1月,地点:北京,IP地址:$IP,错误:IP段$SEGMENT不在0-255范围内。" exit 1 fi done<br> echo "时间:2023年1月,地点:北京,IP地址:$IP,结论:IP地址合法。" else echo "时间:2023年1月,地点:北京,IP地址:$IP,错误:IP地址格式不正确。" fi
208