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

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  

以上是关于Linux脚本练习之script092- 判断输入的是否为IP地址的主要内容,如果未能解决你的问题,请参考以下文章

Linux脚本练习之script025-判断用户输入的参数是否为正整数。

Linux脚本练习之script024-判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)。

Linux脚本练习之script023-提示用户输入 `yes` 或 `no`,并判断用户输入的是`yes` 还是 `no`,或是其它信息。

Linux脚本练习之script013-判断当前用户对指定参数文件,是否不可读并且不可写。

Linux脚本练习之script040-传递两个整数给脚本,让脚本分别计算并显示这两个整数的和差积商。

Linux脚本练习之script014-判断参数文件是否为 `.sh` 后缀的普通文件,如果是,则添加所有人可执行权限,否则提示非脚本文件。