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 "."
表示按照点号进行分割,NF
是 awk
命令的内置变量,表示分割后字段域的个数,如果不足四个,则应该输出 "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` 后缀的普通文件,如果是,则添加所有人可执行权限,否则提示非脚本文件。