免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9199 | 回复: 7
打印 上一主题 下一主题

if语句中ping判断通与不通的条件是什么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-24 12:50 |只看该作者 |倒序浏览
#!/bin/bash
for ((i=50;i<255;i++))
do
  if ping -c 1 192.168.1.$i > /dev/null
  then
    echo "192.168.1.$i is online"
  else
    echo "192.168.1.$i is not online"
  fi
done
#!/bin/bash
for ip in `seq 1 254`
do
  address=192.168.1.$ip
  if ping -c 1 $address > /dev/null
  then
    echo "$address is online"
  else
    echo "$address is not online"
  fi
done


这个是我同事给出的题目,我是这么写的,结果也是想要的,但是还有点不太明白,希望能得到您的指点。
只看其中的if语句:
  if ping -c 1 $address > /dev/null
  then
    echo "$address is online"    #如果条件ping -c 1 $address为真,即通,则执行该命令;
  else
    echo "$address is not online"    #如果条件ping -c 1 $address为假,即不通,执行该命令;
  fi


ping IP通与不通都是有响应的,这里判断通与不通的依据是什么?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2008-04-24 13:07 |只看该作者
nmap -sP 192.168.1.50-254

论坛徽章:
0
3 [报告]
发表于 2008-04-24 15:36 |只看该作者
ping 不通返回非0 ,ping 通了返回0

if 判断后满的命令的返回值,0为真,非0为假。注意,是判断命令的返回值,不是判断命令是否有输出内容。

论坛徽章:
0
4 [报告]
发表于 2008-04-24 16:05 |只看该作者
谢谢两位的帮助。

论坛徽章:
0
5 [报告]
发表于 2008-04-24 16:16 |只看该作者
原帖由 gucuiwen 于 2008-4-24 15:36 发表
ping 不通返回非0 ,ping 通了返回0

if 判断后满的命令的返回值,0为真,非0为假。注意,是判断命令的返回值,不是判断命令是否有输出内容。


突然间想想0和1,发现分不清了。
搜了搜:
逻辑真值有两种,1为真,0为假,但在运算时用非零表示真,0表示假…
即:数值->逻辑真值--非0为真,0为假/逻辑真值->数值--真为1,假为0…

晕了!
分不清了!

论坛徽章:
0
6 [报告]
发表于 2008-04-24 16:23 |只看该作者
0为高电平,为假;
1为低电平,为真。

论坛徽章:
0
7 [报告]
发表于 2008-04-24 16:25 |只看该作者
原帖由 marsaber 于 2008-4-24 16:23 发表
0为高电平,为假;
1为低电平,为真。


和电平什么关系?
放在if环境下讨论比较贴切

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2008-04-24 16:42 |只看该作者
原帖由 marsaber 于 2008-4-24 16:16 发表


突然间想想0和1,发现分不清了。
搜了搜:
逻辑真值有两种,1为真,0为假,但在运算时用非零表示真,0表示假…
即:数值->逻辑真值--非0为真,0为假/逻辑真值->数值--真为1,假为0…

晕了!
分不 ...

在c、awk、perl、python等语言中1是真值,0是假值。
在shell中0是真值,非零是假值。
因为命令正确执行的正常情况只有一种,而出错的原因可能有很多种,所以用0表示正常,多个非零的值分别表示不同的出错情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP