当前位置: 首页>>技术问答>>正文


如何阅读带空格的’for’循环中的完整行

, , ,

问题描述

我想为文件运行for循环,我想显示整行。但是,它只能显示最后一个字。我想要整条线。

for j in `cat ./file_wget_med`

do
echo $j

done

运行结果:

Found.

这是我的数据:

$ cat file_wget_med
2013-09-11 14:27:03 ERROR 404: Not Found.

最佳解决办法

for循环会在看到空格,制表符或换行符等任何空格时分裂。所以,你应该使用IFS (Internal Field Separator)

IFS=$'\n'       # make newlines the only separator
for j in $(cat ./file_wget_med)    
do
    echo "$j"
done

次佳解决办法

for默认循环分割任何空格(空格,制表符,换行符);一次只能在一条线上工作的最简单方法是使用while read循环,该循环在换行符上分割:

while read i; do echo "$i"; done < ./file_wget_med

我希望你的命令每行可以吐出一个单词(当我用自己的文件测试它时发生了什么)。如果发生其他事情,我不确定是什么原因造成的。

第三种解决办法

#!/bin/bash
files=`find <subdir> -name '*'`
while read -r fname; do
    echo $fname
done <<< "$files"

验证工作,而不是你可能想要的一行,但不可能这样做优雅。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/941.html,未经允许,请勿转载。