版本1:只能校验格式,不能校验数字在0-255之间
#!/bin/bash
# 获取用户输入的IP地址
echo "请输入IP地址:"
read ip_address
# 使用正则表达式校验IP地址格式是否符合规范
if [[ $ip_address =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "IP地址 $ip_address 符合规范。"
else
echo "IP地址 $ip_address 不符合规范。"
fi
版本2:能校验格式,也能校验数字在0-255之间
#!/bin/bash
# 获取用户输入的IP地址
echo "请输入IP地址:"
read ip_address
# 使用正则表达式校验IP地址格式是否符合规范
if [[ $ip_address =~ ^([0-9]{
1,3}\.){
3}[0-9]{
1,3}$ ]]; then
# 对IP地址进行拆分
IFS='.' read -r -a ip_parts <<< "$ip_address"
# 判断每个数字是否在0-255之间
valid_ip=true
for ip_part in "${ip_parts[@]}"; do
if (( $ip_part < 0 || $ip_part > 255 )); then
valid_ip=false
break
fi
done
# 输出结果
if [ $valid_ip == true ]; then
echo "IP地址 $ip_address 符合规范。"
else
echo "IP地址 $ip_address 不符合规范。"
fi
else
echo "IP地址 $ip_address 不符合规范。"
fi
做成函数形式调用
#!/bin/bash
# 定义函数来校验IP地址格式是否符合规范
function validate_ip_address {
local ip_address=$1
# 使用正则表达式校验IP地址格式是否符合规范
if [[ $ip_address =~ ^([0-9]{
1,3}\.){
3}[0-9]{
1,3}$ ]]; then
# 对IP地址进行拆分
IFS='.' read -r -a ip_parts <<< "$ip_address"
# 判断每个数字是否在0-255之间
valid_ip=true
for ip_part in "${ip_parts[@]}"; do
if (( $ip_part < 0 || $ip_part > 255 )); then
valid_ip=false
break
fi
done
# 输出结果
if [ $valid_ip == true ]; then
echo "IP地址 $ip_address 符合规范。"
return 0 # 返回0表示IP地址符合规范
else
echo "IP地址 $ip_address 不符合规范。"
return 1 # 返回1表示IP地址不符合规范
fi
else
echo "IP地址 $ip_address 不符合规范。"
return 1 # 返回1表示IP地址不符合规范
fi
}
# 获取用户输入的IP地址
echo "请输入IP地址:"
read ip_address
# 调用函数进行IP地址校验
validate_ip_address "$ip_address"
result=$?
# 判断函数返回值,如果IP地址不符合规范,则退出脚本
if [ $result != 0 ]; then
exit 1
fi
# 继续执行其他代码
echo "IP地址校验通过。"
我还想把函数放到调用后面呢,但是ShellCheck老说这样不好。。。。