免费注册 查看新帖 |

Chinaunix

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

while循环问题!? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-26 18:21 |只看该作者 |倒序浏览
我写了个这样的脚本:

  1. #!/bin/sh
  2. netstat -ant |grep 127.0.0.1|sort|awk '{print $4}'|awk -F: '{if($2~/^1/)print $2}'|uniq >list.txt

  3. while read LINE
  4. do
  5. ##############################
  6. ssh root@localhost -p $LINE "   date>$LINE.log;mii-tool>>$LINE.log;ls -了 /var/log/>>$LINE.log;cat /proc/net/ip_conntrack |wc -
  7. l>>$LINE.log;netstat -ant|wc -l>>$LINE.log"
  8. scp -P $LINE root@localhost:/root/*.log ./logs/
  9. ##############################
  10. echo -e $LINE"\t`tput bold`[ OK ]`tput sgr0`\n"
  11. continue
  12. sleep 3s
  13. done<list.txt


复制代码

我的server是个主要服务器,其它机器通过端口映射到了我的端口上,全部是1开头的端口。所以我写这个脚本:

自动生成端口号以1开头的端口列表;
自动ssh上该端口上!我已经做好key所以连接不用密码~;
然后检查些log并写入相关的文件中,烤到我的server上!

可是每次都只将第一个端口的机器,检查完成并拷贝给我log后,就自动结束,灭由进行循环~~

请问怎么回事啊?我还以为时间的问题,加了sleep~~continue

请教了~~~~

论坛徽章:
0
2 [报告]
发表于 2005-08-26 20:17 |只看该作者

while循环问题!?

continue change to # continue,
`continue' will go back to the top of the script ,
the code under `continue' will not be execute

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-08-27 00:45 |只看该作者

while循环问题!?

continue可以用在while循环中,但是,while read 结构不是循环!

论坛徽章:
0
4 [报告]
发表于 2005-08-27 15:18 |只看该作者

while循环问题!?

while read为什么不是循环呢
觉得这里的continue用的很别扭,好像不需要啊

论坛徽章:
0
5 [报告]
发表于 2005-08-28 00:22 |只看该作者

while循环问题!?

while read 是循环,continue 樓主似乎用不著的,sleep 不會執行
吧?也不能一行地讀入list.txt 的內容,因為script 到了continue 已不再往下
,回到script 的 while loop 的開端執行,因為 `read LINE' 讀不了什麼,便退出
script 。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-08-28 01:00 |只看该作者

while循环问题!?

原帖由 "3x3eyes" 发表:
while read为什么不是循环呢
觉得这里的continue用的很别扭,好像不需要啊

之所以说while read不是循环,是因为这个特殊的结构逐行读取文本的内容,知道文件的尾部! 而循环的作用是什么? 我想不用我多说吧~

论坛徽章:
0
7 [报告]
发表于 2005-08-28 23:45 |只看该作者

while循环问题!?

原帖由 "yearnx" 发表:
我的server是个主要服务器,其它机器通过端口映射到了我的端口上,全部是1开头的端口。所以我写这个脚本:

自动生成端口号以1开头的端口列表;
自动ssh上该端口上!我已经做好key所以连接不用密码~;
然后检查?.........

  1. 1   while read 是循环
  2. 2   continue 在这个循环里是起作用的 导致sleep 不会被执行
  3. 3  你的两行注释中的脚本可能有问题 给你造成并没有进入循环的判断
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-08-29 00:25 |只看该作者

while循环问题!?

改 for loop 如何:
  1. for LINE in `netstat -ant |grep 127.0.0.1|sort|awk '{print $4}'|awk -F: '{if($2~/^1/)print $2}'|uniq`
  2. do
  3. .....
  4. done
复制代码

论坛徽章:
0
9 [报告]
发表于 2005-08-29 12:35 |只看该作者

while循环问题!?

原帖由 "網中人" 发表:
for LINE in `netstat -ant |grep 127.0.0.1|sort|awk '{print $4}'|awk -F: '{if($2~/^1/)print $2}'|uniq`
do
.....
done


我用for后,就正常了。谢谢楼上这位弟兄, 不过我还想问while怎么不可以呢?

注:while read 是一种正确处理文本行的方式;我的注释行里的code是正确的哦;continue在while中是不需要的,我是在实在没有办法的时候添加了他,sorry~

不过谢谢楼上的各位朋友了。呵呵。继续关注中。。。。。 :em12:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP