while read line 与 for 区别

总结一下while read line 与 for循环的区别(白话)

都是读取文件 while read line 以\n为分割符,而for是以空格为分隔符

还有一个需要注意的是从windos拿过来的文件默认行尾都是以\r结尾的,如果不转换linux/unix下就会以为是一行,所以拿过来需要转换一下。还有一个参数IFS是设置分割符的,以下是几个案例:

[email protected] test]# cat iptest.sh

#/bin/bash

IPS="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"

echo "====while test ===="

i=0

echo $IPS | while read line

do

echo $(($i+1))

echo $line

done

echo "====for test ===="

n=0

for ip in $IPS ;

do

n=$(($n+1))

echo $ip

echo $n

done

[[email protected] test]#

结果

[[email protected] test]# sh iptest.sh

====while test ====

1

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 ====

10.1.1.10

1

3001

。。。。。。。

10.1.1.14

19

3002

20

[[email protected] test]有的人说是echo $IPS会将所有输出当成一个整体通过管道传输给下一个进程所以在一行,当然添加IFS="\n"之后肯定你已经猜到了,后边的这个案例是把IPS添加到文件了,这个while和for的区别更明显,结果自己尝试

[[email protected] test]# cat iptest2.sh

#/bin/bash

#IFS="\n"

echo "====while test ===="

while read line

do

echo $line

done < ./ip.log

echo "====for test ===="

for ip in `cat ip.log`;

do

echo $ip

done

[[email protected] test]#

时间: 2024-08-05 13:02:17

while read line 与 for 区别的相关文章

Line in和Mic in的区别及使用

Line in和Mic in的区别及使用  我们的电脑声卡上,一般都会有Line in和Mic in两个接口,翻译成中文就是"线性输入"和"麦克风输入",这两个都是输入端口,但是还是有区别的: 1.Line in端口:该端口主要用于连接电吉他.电子琴.合成器等外界设备的音频信号输出的录音,由于这些设备本身输出功率就比较大,因此需要连接到Line in端口录音,当然使用它们录音从某种程度上也可以被称为外部设备的"内录".一般您使用的声卡越好,Lin

Sliverlight之2 适量绘图

目标:在两天内完成一个环形图的绘制 准备:第5章 矢量绘图 1,形状绘图(见Project11) (1)线条用什么标签表示,它有哪几个重要属性 说明: Line标签 x1 y1表示起始点x,y坐标 x2 y2表示结束点x,y坐标 (2)画一条线(x1=100,y1=100 x2=200,y2=200) 说明: <Line Stroke="Green" StrokeThickness="3" X1="100" Y1="100&quo

uva 12657 - Boxes in a Line(AC和TLE的区别,为什么说STL慢..)

用STL中的list写的,TLE #include<cstdio> #include<iostream> #include<cstring> #include<list> #include<algorithm> using namespace std; list<int> l; list<int>::iterator it1,it2,it3,it4,it5,it; void work(int a,int a1=1,int

回车”(carriage return)和”换行”(line feed)的区别和来历-(附:ASCII表)

这两天研究小票打印机编程手册,遇到这样一个问题: LF,即Line Feed,中文意思“换行”:CR,即Carriage Return,中文意思“回车”.但是我们通常把这两个混为一谈.既然设置成2个,则肯定有其存在的道理,查了一下资料,与大家分享. 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行

Python IDLE(python GUI)与python(comand line)有什么区别

用了几天命令行,才知道IDLE这个东西. 打开python 2.7之后有三个命令窗口:IDLE(python GUI),python(comand line),Module Docs. Module Docs是一个搜索框,可搜索python中不了解的函数. 比较IDLE与命令行:都是交互模式 IDLE(python GUI): 白色窗口.有代码高亮.自动缩进.代码提示和菜单栏: 可以新建python文件,可复制粘贴代码.但不会返回结果: 不能用向上箭头重复上一条命令. python(comand

while read line 与for循环的区别

while read line 是一次性将文件信息读入并赋值给变量line ,while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量. for是每次读取文件中一个以空格为分割符的字符串. 如下示例脚本: #/bin/bash IPS="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.

PYTHON编码处理-str与Unicode的区别

一篇关于str和Unicode的好文章 整理下python编码相关的内容 注意: 以下讨论为Python2.x版本, Py3k的待尝试 开始 用python处理中文时,读取文件或消息,http参数等等 一运行,发现乱码(字符串处理,读写文件,print) 然后,大多数人的做法是,调用encode/decode进行调试,并没有明确思考为何出现乱码 所以调试时最常出现的错误 错误1 Traceback (most recent call last): File "<stdin>"

Python学习笔记——基础篇【第五周】——re.match与re.search的区别

正则表达式 语法: import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表匹配上了 m = p.match('14534Abc') #按上面生成的正则对象 去匹配 字符串, 如果能匹配成功,这个m就会有值, 否则m为None if m: #不为空代表匹配上了 print(m.group

Python2和Python3的一些语法区别

Python2和Python3的一些语法区别 python Python2和Python3的一些语法区别 1.print 2.input 3. python3版本相对2版本的部分其他区别 问题:为何会出现乱码的情况 问题:如何获取编码方式的信息? 问题:在控制台上看到的到底是什么? 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is version 2') 但到了3,就只能加上括号,像一个函数一样来使用 print: