📅  最后修改于: 2023-12-03 14:59:28.422000             🧑  作者: Mango
在Shell/Bash编程中,有时我们需要从一个文件或者变量中读取多行数据,并对每一行进行循环处理。这时,我们可以使用while
循环来实现此功能。
要从文件中读取每一行,我们可以使用cat
命令以管道的形式将文件传输给while
循环,read
命令可以用来读取每一行的数据。下面是一个读取文件中每一行数据并输出的例子:
#!/bin/bash
while read line
do
echo $line
done < file.txt
其中,file.txt
是待读取的文件的文件名,<
符号用来将文件重定向为标准输入流,传递给while
循环。read
命令读取每一行数据,并将其存储到$line
变量中,在循环体中可以对该变量进行处理。
要从一个变量中读取多行数据,我们可以使用echo
命令和while
循环来实现。首先,将包含多行数据的变量传递给echo
命令,并在结尾处添加一个占位符(如EOF
),表示数据输入的结束。然后,使用管道
将数据传递给while
循环,在循环体中,可以使用read
命令读取每一行数据。下面是一个从变量中读取每一行数据并输出的例子:
#!/bin/bash
var="这是第一行
这是第二行
这是第三行
"
echo "$var" | while read line
do
echo $line
done
其中,var
是包含多行数据的变量名,变量值是用双引号括起来的字符串,字符串中的每一行数据使用换行符隔开。echo
命令将该变量传递给管道,并在结尾处使用EOF
占位符表示输入的结束,while
循环读取每一行数据,并将其存储到$line
变量中,在循环体中可以对该变量进行处理。
使用while
循环读取文件或者从变量中读取多行数据的方法基本相同,都是使用read
命令读取每一行数据,只是数据来源不同。这种循环的好处是可以在循环体中对每一行数据进行处理,非常适合需要逐行处理数据的场景。