解决方案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 脚本默认逐单词读取文件,而不是逐行读取。
这就是说如果我们有一个包含以下内容的文件:
<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