免费注册 查看新帖 |

Chinaunix

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

关于Unitl循环的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-01 10:39 |只看该作者 |倒序浏览
本帖最后由 nigelrax 于 2010-02-01 10:40 编辑

刚刚在一本书上看到一个关于Until循环的例子,非常疑惑,感觉书上的例子错误很多并且是相当严重的错误

贴出来让大家看看是不是确实错了,也可以借此机会重新温习一下Until的知识

下面是书中的相关内容


until循环做监视条件也很有用。假定要监视文件系统容量,当它达到一定水平时通知超级用户。
下面的脚本监视文件系统/logs,不断从变量$LOOK_OUT中抽取信息,$LOOK_OUT包含使用awk和grep得到的/logs容量。
如果容量达到90%,触发命令部分,向超级用户发送邮件,脚本退出。必须退出,如果不退出,条件保持为真(例如,容量总是保持在90%以上),将会不断的向超级用户发送邮件。

$ pg until_mon
#!/bin/sh
# until_mon
# get percent column and strip off header row from df
LOOK_OUT=`df |grep /logs | awk '{print $5}'| sed 's/%//g'`
echo $LOOK_OUT
until [ "$LOOK_OUT" -gt "90" ]
do
    echo "Filesystem..logs is nearly full" | mail root
    exit 0
done

其中错误内容已经用其他颜色标注

红色标注错误:until条件为假时循环成立,直至条件为真时循环终止。而书中意思明显相反,当容量大于90%时(即条件为真时)循环才成立。
绿色标注错误:shell中的变量赋值不是一次性的吗?例如 time=`date`,无论何时echo "$time",其值始终是第一次赋值时的时间。那么书中的LOOK_OUT变量也就是一个定值,怎么会不断的抽取LOOK_OUT的值进行循环条件判定呢?(该脚本只执行一次,非cron脚本)

因为《unix & linx programing》这本书还算权威,我看到也有些疑惑,但是毕竟这么明显的错误。
还是请大家一起研究研究

论坛徽章:
0
2 [报告]
发表于 2010-02-01 13:01 |只看该作者
是错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP