shell的for while读取文件写法和区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell的for while读取文件写法和区别相关的知识,希望对你有一定的参考价值。

参考技术A 常见的while和for循环的写法,大概有如下几种:

while循环:会将每行的内容读入到line变量,当while出现空行,用if判断字符=0, contiun

for循环: 将读入的内容以IFS(shell中的环境变量,Internal Field Seperator,字段分隔符)为界分隔, 然后将各个分隔开的内容,逐一读入变量line。本质上说,for循环读取的是字段,只不过可以设置IFS为\n这样能够逐行读取。

如果希望for处理文件按回车分隔,则需重新定义分隔符 IFS:内部字段分隔符 IFS=$'\n'

示例1

示例2

Shell脚本——按行读取文件

按行读取文件的三种方法:

while read line
do
	echo $line
done < filename


cat filename | while read line
do
	echo $line
done


for line in $(cat filename)
do
	echo $line
done


注:while逐行读取和for逐行读取有区别——while每次读取一行,for每次读取由空白分割的一部分;

$ cat file
1111
2222
3333 4444 555

$ cat file | while read line; do echo $line; done
1111
2222
3333 4444 555

$ for line in $(cat file); do echo $line; done
1111
2222
3333
4444
555


以上是关于shell的for while读取文件写法和区别的主要内容,如果未能解决你的问题,请参考以下文章

shell72while读文件创建用户

for(;;)和while(true)的区别

Shell脚本——按行读取文件

Shell脚本——按行读取文件

shell:逐行读取文件内容

Shell按行读取文件的3种方法