Linux Shell中编写判断IP地址有效性脚本碰到了问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:14:35
首先看一下下面写好的脚本:

#!/bin/bash -x

valid_ip=0
while [ $valid_ip ]
do
echo -n "Please input IP address: "
read ip
chkip=(`echo $ip|awk -F '.' '{print $1}'` `echo $ip|awk -F '.' '{print $2}'` `echo $ip|awk -F '.' '{print $3}'` `echo $ip|awk -F '.' '{print $4}'`)
if [ -z $ip ]; then
echo "Sorry, Please input an IP address."
elif [ -z ${chkip[0]} ] || [ -z ${chkip[1]} ] || [ -z ${chkip[2]} ] || [ -z ${chkip[3]} ]; then
echo "Sorry, Please input a valid IP address. (1)"
elif [ ${chkip[0]}>=255 ] || [ ${chkip[0]}<0 ] || [ ${chkip[1]}>255 ] || [ ${chkip[1]}<0 ] || [ ${chkip[2]}>255 ] || [ ${chkip[2]}<0 ] || [ ${chkip[3]}>=255 ] || [ ${chkip[3]}<=0 ]; then
echo "Sorry, Please input a valid IP address. (2)"
else
valid_ip=1
fi
done
echo ${chkip[0]}
echo ${chkip[1]}

#! /bin/bash

function checkip {
for var in `echo $1 | awk -F. '{print $1, $2, $3, $4}'`
do
if [ $var -ge 1 -a $var -le 255 ]
then
continue
else
return 1
fi
done
}

echo -n 'Give me a IP address to check:'
read ip
checkip $ip
case $? in
0)
echo "Your input $ip is a valid IP address.";;
1)
echo "Your input $ip is invalid.";;
esac

建议你先把这一堆逻辑判断分开, 或者加一些调试用的echo回显 很快就能判断出问题的

哎 虽然都是写脚本的, 可看到这个还是懒得去细看了 笨人的代码风格就是不讲究技巧 只讲究清楚