千家信息网

shell按行读取文件的常见几种方法

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,1.通过重定向+read命令while read linedo #对每一行字符串的操作 shell_commandsdone < File.txt2.通过cat +IFS重定义IFS_ol
千家信息网最后更新 2024年09月22日shell按行读取文件的常见几种方法



1.通过重定向+read命令

while read linedo    #对每一行字符串的操作    shell_commandsdone < File.txt


2.通过cat +IFS重定义

IFS_old=$IFSIFS=$'\n'for line in $(cat File.txt)do    shell_commandsdoneIFS=$IFS_old


3.管道+read命令(经常看到,但不好用的做法。)

cat File.txt | read linedo    shell_commandsdone


注意:这个方法有一个非常明显的缺陷。shell_command所定义的变量在循环结束后会"失效"!!


举例:

file1.txt 的内容如下:

abcd


方法一的shell代码:

#行数line_count=0#文件内容file_content=""#开始读取while read linedo    echo "我读取到了:"    echo ${line}    line_count=$(expr $line_count + 1)    echo "这是第${line_count}行"    file_content="$file_content $line"done


方法三的shell代码

#行数line_count=0#文件内容file_content=""#开始读取cat file1.txt | read linedo    echo "我读取到了:"    echo ${line}    line_count=$(expr $line_count + 1)    echo "这是第${line_count}行"    file_content="$file_content $line"done#检验结果echo "刚才的程序读取到文件file1.txt有 ${line_count}行,里面的内容为${file_content}"


大家验证一下两种方法的运行结果,就可以知道区别了。

0