Linux脚本练习之script092- 判断输入的是否为IP地址

script092

题目

注:题目来源于 SHELL16 判断输入的是否为IP地址

写一个脚本统计文件nowcoder.txt中的每一行是否是正确的IP地址。

  • 如果是正确的IP地址输出:yes
  • 如果是错误的IP地址,四段号码的话输出:no,否则的话输出:error

假设 nowcoder.txt 内容如下:

192.168.1.1
192.168.1.0
300.0.0.0
123

你的脚本应该输出:

yes
yes
no
error

脚本一

循环读取文件中的每一行,通过 awk 命令编程来判断 IP 地址是否正确。首先 -F "." 表示按照点号进行分割,NFawk 命令的内置变量,表示分割后字段域的个数,如果不足四个,则应该输出 "error" 表示错误的。如果字段域的个数是四个,则需要判断每个字段的值是否在 [0, 255] 范围内,如果四个字段的值都在这个范围内则表示是正确的 IP 地址则输出 "yes";只要有一个字段的值不在这个范围内则表示是错误的 IP 地址则输出 "no"

#!/bin/bash

# 循环读取文件每一行
while read line; do
  # 用点号分割每一行的内容
  echo "${line}" | awk -F "." '{
  # 如果切割后的字段域个数不是四个则输出 "error"
  if(NF!=4){
    print "error"
  }
  # 如果字段域的个数是四个,则判断 IP 地址是否正确
  else{
  	# 循环每一个字段
    for(i=1;i<=NF;i++){
      # 判断该字段的范围是否在 [0, 255] 范围内,如果是则进行计数
      if($i>=0&&$i<=255){
        count++
      }
    }
    # 最后判断计数变量 count 是否等于 4,如果是则表示该 IP 地址是正确的,否则不正确
    if(count==4){
      print "yes"
    } else{
      print "no"
    }
  }
}'
done < nowcoder.txt  

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/125814225