shell校验ip格式校验(ip校验)(ip地址校验ip地址)

版本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老说这样不好。。。。

猜你喜欢

转载自blog.csdn.net/Dontla/article/details/129842259