📜  bash while 从变量中读取行循环 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:28.422000             🧑  作者: Mango

Bash while 从变量中读取行循环 - Shell/Bash

在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命令读取每一行数据,只是数据来源不同。这种循环的好处是可以在循环体中对每一行数据进行处理,非常适合需要逐行处理数据的场景。