read和readkey的区别line的区别

博客访问: 6761089
博文数量: 1030
注册时间:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
工作过程中遇到要从一个ip列表中获取ip port,然后ssh ip 到目标机器进行特定的操作,但是编写脚本的过程 使用while read line 读取ip列表,在while循环中只读取第一个ip 后就退出脚本的情况。
解释上面遇到的问题之前,先看到for 与while的测试对比,文中ip经过修改。
#/bin/bash
IPS="10.1.1.10
echo&"====while test ===="
echo $IPS | while read line
& &&echo $(($i+1))
& & echo $line
echo "====for test ===="
for ip in $IPS ;
&&&n=$(($n+1))
&&&echo $ip
&&&echo $n
输出结果如下:
====while test ====
10.1.1.10 3001 10.1.1.10 3003 10.1.1.11 3001 10.1.1.11 3002 10.1.1.11 3004 10.1.1.11 3005 10.1.1.13 3002 10.1.1.13 3003 10.1.1.13 3004 10.1.1.14 3002
====for test ====
由例子可见 while read line 是一次性将信息读入并赋值给line ,而for是每次读取一个以空格为分割符的字符串。
while中使用重定向机制,IPS中的所有信息都被读入并重定向给了整个while 语句中的line 变量。所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题就出在这里,$line中的最后一行已经读完,无法获取下一行记录,从而退出 while循环。
【解决方法】
1 使用ssh -n "command"&
2&ssh "cmd" < /dev/null 将ssh 的输入重定向输入。
阅读(52403) | 评论(1) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
这应该是因为使用了pipeline,echo&$IPS会将所有输出当成一个整体通过管道传输给下一个进程,因此read&line只接受到一条信息;如果将$IPS内容单独放入一个文件&cat&IPS&|&while&read&line应该会达到第2个例子的效果
请登录后评论。python 中readline 和readlines的区别
f0=file(&ip.txt&,r)
while true
&&& for line in f0.readli
&&& if not line: break
&&& pass #do something
readline 的用法,速度是fileinput的3倍左右,每秒3-4万行,好处是 一行行读 ,不占内存,适合处理比较大的文件,比如超过内存大小的文件
f1=open(&ip.txt&,&r&)
for line in f1.readlines()#跟上面的方式不同
print line
readlines会把文件都读入内存,速度大大增加,但是木有这么大内存。。。
作者:lovejoy& Read()返回int& ReadLine()返回String
& 这个返回的值是你输入的第一个字符的UNICODE码,不管你输入的是多少个字符,他只返回第一个字符
static int Main()&&
&&&&&&&& {
&&&&&&&&&&&&&&&&&& int c=Console.Read();
&&&&&&&&&&&&&&&&&& int d=Console.Read();
&&&&&&&& &&&&&&&& Console.WriteLine(c+"+"+d);
&&&&&&&&&&&&&&&&&& return&& 0;&&&&
&&&&&&&& }
测试用例是 输入ww
那么输出结果是: 119+119
W的unicode码是119,由此可见Read方法确实如上所述,并且不会等待你再次输入直接显示结果。
那么ReadLine方法又是什么呢?
我们把刚才的例子改为
static int Main()&&
&&&&&&&& {
&&&&&&&&&&&&&&&&&& string c=Console.ReadLine();
&&&&&&&&&&&&&&&&&& string d=Console.ReadLine();
&&&&&&&& &&&&&&&& Console.WriteLine(c+"+"+d);
&&&&&&&&&&&&&&&&&& return&& 0;&&&&
&&&&&&&& }
测试用例还是ww
输出结果 ww+ww
那么为什么会是这种表现呢?在做测试时可以看到它等待你输入回车,然后光标在下一行闪烁等待你再次输入,再次按下回车屏幕才会显示出结果并且结果也和上次表现不同,它的返回类型是string类型,并且输入的是什么输出的表现还是什么。
阅读(...) 评论()用户名:梦想的星空
文章数:54
评论数:13
访问量:6930
注册日期:
阅读量:1297
阅读量:3317
阅读量:580752
阅读量:463896
51CTO推荐博文
python read() readline() readlines() write() writelines()方法总结与区别输出:read()方法用于直接读取字节到字符串中,可以接参数给定最多读取的字节数,如果没有给定,则文件读取到末尾。readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包括行结束符,作为字符串返回。readlines()方法读取所有行然后把它们作为一个字符串列表返回文件/home/pjc/python/pjc.txt的内容如下,分别使用上面的三个方法来读取,注意区别:who i am? & I'm heheread()&&&&fobj&=&open('/home/pjc/python/pjc.txt')&&&&&&#默认以只读方式打开&&&&&&&a&=&fobj.read()
"who&i&am?\nI'm&hehe\n"&&&&&&#直接读取字节到字符串中,包括了换行符
&&&&print&a&&&
who&i&am?&&&&
&&&&fobj.close()&&&&&&&& #关闭打开的文件 & &readline():&&&&fobj&=&open('/home/pjc/python/pjc.txt')&&&
&&&&b&=&fobj.readline()&&&&
&&&&b&&&&&&&&&#读取整行,包括行结束符,&作为字符串返回&&&&
'who&i&am?\n'&&&&
&&&&c&=&fobj.readline()&&&&
&&&&c&&&&&&&&&#读取整行,包括行结束符,&作为字符串返回&,已经读到下一行了&&&&
"I'm&hehe\n"
&&&&fobj.close()&readlines():&&&&fobj&=&open('/home/pjc/python/pjc.txt')&&&
&&&&d&=&fobj.readlines()&&&&
['who&i&am?\n',&"I'm&hehe\n"]&&&&&#读取&&
&然后把它们作为一个字符串列表返回&&&&
&&&&fobj.close()&输入:write()方法和read()、readline()方法相反,将字符串写入到文件中。和readlines()方法一样,writelines()方法是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。write():&&&&fobj&=&open('/home/pjc/python/pjc.txt','w')&&&&&#确保pjc.txt没有存在,如果存在,则会首先清空,然后写入&&&
&&&&msg&=&['pengjc','shiqq','caoxy']&&&&&&&&&&#没有显示的给出换行符&&&&
&&&&for&m&in&msg:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
...&&fobj.write(m)&&&&
&&&&fobj.close()
#&cat&/home/pjc/python/pjc.txt&&&&
pengjcshiqqcaoxy[root@venus&&&&&fobj&=&open('/home/pjc/python/pjc.txt','w')&&&&&#会覆盖之前的数据&&&
&&&&msg&=&['pengjc\n','shiqq\n','caoxy\n']&&&&&&&#显式给出换行符&&&&
&&&&for&m&in&msg:&&&&
...&&fobj.write(m)&&&&
&&&&fobj.close()
#&cat&/home/pjc/python/pjc.txt&&&
pengjc&&&&
caoxywritelines():&&&&fobj&=&open('/home/pjc/python/pjc.txt','w')&&
&&&&msg&=&['pengjc\n','shiqq\n','caoxy\n']&&&&
&&&&fobj.writelines(msg)&&&&
&&&&fobj.close()
#&cat&/home/pjc/python/pjc.txt&&&&&
pengjc&&&&
caoxy本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)博客分类:
while (-1 != errorReader.read()) {
String line = errorReader.readLine();//line= "ine=40"
读取流的操作会导致流中的游标向后移动 例如:while的条件中的while(br.read()!=-1) 标准输出中的system.out.println(br.readLine())都导致了游标向后移动 真正使用时的readLine实际上已经不是标准输出中的readLine了
String line = "";
while (null != (line = errorReader.readLine())) {
syso(line);//line=40
浏览: 502635 次
来自: 北京
还可以了,po主的第一个方法可行,第二个方法没有试
Soongtracy 写道方法二完全不行啊亲,你自己有木有试过 ...
您好,有个问题想请教一下:&birt生成Excel缺 ...
楼主,你找到原因了吗?这是为啥?貌似是JVM出bug了}

我要回帖

更多关于 pow函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信