Bash 从变量中逐行读取文件

Bash 从变量中逐行读取文件,bash,shell,sh,Bash,Shell,Sh,我正在编写一个脚本,不清楚read-r line如何知道从哪个变量获取数据。。我想从文件变量中逐行读取 以下是我正在编写的脚本: #!/bin/bash cd "/" FILE="$(< /home/FileSystemCorruptionTest/*.chk)" while read -r line do echo "$line" > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log done

我正在编写一个脚本,不清楚
read-r line
如何知道从哪个变量获取数据。。我想从文件变量中逐行读取

以下是我正在编写的脚本:

#!/bin/bash
cd "/"
FILE="$(< /home/FileSystemCorruptionTest/*.chk)" 

while read -r line
do
    echo "$line" > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log
done

echo "" > /home/FileSystemCorruptionTest/Done
#/bin/bash
cd/“
FILE=“$(/home/FileSystemCorruptionTest/`date+%Y\u%m\u%d\u%H\u%m\u%S`\u 1.log
完成
echo”“>/home/FileSystemCorruptionTest/Done

因为看起来您想要合并多个文件,我想我会认为这是对
cat
的合法使用:

cat /home/FileSystemCorruptionTest/*.chk | while read -r line
do
    echo "$line"
done > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log
注意,我将重定向移出了循环,以防止每行覆盖一次文件

还请注意,您的示例可以很容易地写成:

cat /home/FileSystemCorruptionTest/*.chk > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log

如果您实际上只有一个文件(并且希望将其存储在一个变量中),那么您可以使用
,因为它看起来像是要组合多个文件,我想我会认为这是
cat
的合法用法:

cat /home/FileSystemCorruptionTest/*.chk | while read -r line
do
    echo "$line"
done > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log
注意,我将重定向移出了循环,以防止每行覆盖一次文件

还请注意,您的示例可以很容易地写成:

cat /home/FileSystemCorruptionTest/*.chk > /home/FileSystemCorruptionTest/`date +%Y_%m_%d_%H_%M_%S`_1.log

如果您实际上只有一个文件(并且希望将其存储在变量中),那么您可以使用所请求的

echo "${FILE}" | while read -r line …

但我认为Tom的解决方案更好。

您的要求:

echo "${FILE}" | while read -r line …

但我认为汤姆的解决方案更好。

这是玩具的例子吗?为什么要将文件读入变量?我将文件的内容读入变量,因为我将有许多while循环一个接一个地进行,这并不能真正解释为什么不简单地将文件读入日志文件。你到底想完成什么?使用shell循环逐行处理文件通常是您希望避免的事情。本部分介绍了这一点。这是一个玩具示例吗?为什么要将文件读入变量?我将文件的内容读入变量,因为我将有许多while循环一个接一个地进行,这并不能真正解释为什么不简单地将文件读入日志文件。你到底想完成什么?使用shell循环逐行处理文件通常是您希望避免的事情。