解决方案1:使用while do 循环读取

cat some-file | while read theline;
do
echo $theline;
. . .
. . .
. . .
done

解决方案 2:干预 IFS(内部字段分隔符)

IFS 是Internal Field Separator的缩写(内部字段分隔符)

# 保存原来的IFS
oldifs = $IFS
#将IFS设置为换行符,即以换行符为分隔符,(默认为空格)
IFS = $'\ n'
#
# 使用通常的 for do 循环,这次它将使用我们分配的新 IFS
for theline in $(cat some-file);
do
echo $theline;
. . .
. . .
. . .
done
#恢复IFS
IFS = $oldifs
bash - 逐行读取文件而不是逐单词读取

bash 脚本默认逐单词读取文件,而不是逐行读取。
这就是说如果我们有一个包含以下内容的文件:

<start of file>
The quick brown fox jumps over the lazy dog
<end of file>

并使用以下命令阅读和显示它:

for reading in $(cat /some/directory/some-file);
do
echo $reading;
done

输出将是:

<start of output>
The
quick
brown
fox
jumps
over
the
lazy
dog
<end of output>

相反,我们希望它这样显示:

<start of output>The quick brown fox jumps over the lazy dog<end of output>

怎么办?

下面是一些让 bash 逐行读取文件而不是逐单词读取的解决方案:

日期:2020-06-02 22:16:31 来源:oir作者:oir