复习shell的时候遇到点小问题,谁能帮我看下

回复 收藏
复习shell的时候遇到点小问题,就是这个shell里总是会提示一句,很讨厌,我实在是找不出原因了,具体内容如下:
编写shell脚本,判断输入的IP是否正确(IP的规则是,n1.n2.n3.n4,其中1
2015-01-06 23:03 举报
已邀请:
0

阿铭 管理员

赞同来自:

$c -ge 255 这里你少了空格
0

潘有成

赞同来自:

少了个空格,。

另外,逻辑也有点问题吧   如:192.168.0.1       192.168.1.0      

  应改成: if [ $a -lt 1 ]||[ $a -ge 255 ]||[ $b -lt 0 ]||[ $b -ge 255 ]||[ $c -lt 0 ]||[ $c -ge 255 ]||[ $d -lt 1 ]||[ $d -ge 255 ] ;then
0

潘有成

赞同来自:

阿铭 发表于 2015-1-7 09:23
$c -ge 255 这里你少了空格

铭哥的手比我还键{:4_109:}
0

李磊

赞同来自:

潘有成 发表于 2015-1-7 09:27
少了个空格,。

另外,逻辑也有点问题吧   如:192.168.0.1       192.168.1.0      

题目就这样写的,我也就这样做了,出题者是铭哥,那是铭哥的逻辑{:4_107:},我当时想 反正也都是一样 无非就变个数字,就这么着了
0

zjjjjy

赞同来自:

{:4_108:}
0

蔡炳森

赞同来自:

#!/bin/bash
#It's written by caibingsen
#!/bin/bash
#It's written by caibingsen
#date:2016-03-15

#while设置成死循环,在输入的ip不符合条件时,重新输入
while :
do
read -p "请输入要判断的ip地址:" ip
#判断输入的ip地址是否仅由数字和点组成,并将值赋给m。
#判断输入的ip地址的小数点的个数,复制给n
m=`echo $ip |sed 's/[0-9.]//g'`
n=`echo $ip |sed 's/[0-9]//g'|wc -c`
#截取ip地址的四个数字的部分,并分别复制。
n1=`echo $ip |cut -d'.' -f1`
n2=`echo $ip |cut -d'.' -f2`
n3=`echo $ip |cut -d'.' -f3`
n4=`echo $ip |cut -d'.' -f4`
#第一个if通过m和n来判断输入的ip是否符合要求
if [ -z $m ] && [ $n -eq 4 ] && [ -n $n1 ] && [ -n $n2 ] && [ -n $n3 ] && [ -n $n4 ];then
#第二个if通过n1到n4来判断输入的范围是否符合要求。
if [ $n1 -ge 0 ] && [ $n1 -le 255 ] && [ $n2 -ge 0 ] && [ $n2 -le 255 ] && [ $n3 -ge 0 ] && [ $n3 -le 255 ] && [ $n4 -ge 0 ] && [ $n4 -le 255 ]
then
  echo "ip正确"
  exit
else
  echo "你输入的ip错误,请重新输入"
fi
else
   echo "你输入的ip错误,请重新输入"
fi
done

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: