免费注册 查看新帖 |

Chinaunix

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

[系统管理] 关于while的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-01 14:34 |只看该作者 |倒序浏览
本帖最后由 acmus20009 于 2015-07-01 15:38 编辑

在一个IP的文件中记录了两个IP
如:
IP.txt
192.168.1.100
192.168.1.101

使用rsh命令到两个IP所在的主机上执行ls命令:
写成shell 如下:
cat IP.txt | while read cycle
do
     rsh $cycle -l root:root ls >>ls.txt
done

为什么只做了一次循环?


如果循环中使用echo命令如:
cat IP.txt | while read cycle
do
     echo  $cycle
done
就可以循环两次,请问题为什么?rsh的命令怎么修改才可以进行两次循环?
在线等!!
谢谢!

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2015-07-01 14:49 |只看该作者
  1. cat IP.txt | while read cycle
  2. do
  3.      rsh -n $cycle -l root:root ls
  4. done
复制代码
请参考新手导航: 关于while read只执行一次的问题
Q:下面的代码为何只执行了一次就退出了?
seq 10 >file
while read a
do
echo $a
dd &>/dev/null
done <file


A:因为重定向是针对整个while循环块的,而不只是read命令
请参看下面的链接
http://bbs.chinaunix.net/viewthread.php?tid=769040

论坛徽章:
0
3 [报告]
发表于 2015-07-01 15:48 |只看该作者
[henry@localhost ~]$ cat file
1
2
3
4
5
6
7
8
9
10
[henry@localhost ~]$ cat file | while read a
> do
> echo $a
> done
1
2
3
4
5
6
7
8
9
10
[henry@localhost ~]$ 回复 2# reyleon


   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
4 [报告]
发表于 2015-07-01 16:10 |只看该作者
回复 3# acmus20009


你几个意思?

你好好看看上面的帖子行不行?  都说了 rsh 会从你的管道中(标准输入)读取剩下的行, 你加个 -n 参数就相当于改变了标准输入

rsh -n ..... 等价于 rsh ... </dev/null

你的 echo 不会从标准输入中获取数据, 自然没问题啊

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2015-07-01 20:01 |只看该作者
回复 3# acmus20009


    不是每个命令都会从管道里面“吃”数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP