问题描述
我想为文件运行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"
验证工作,而不是你可能想要的一行,但不可能这样做优雅。