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循环逐行处理文件通常是您希望避免的事情。