for循环读取文件

时间:2014-02-15 21:26:20

标签: bash shell

我觉得我已经多次使用'for loop'来逐行读取文件并对输出执行操作。但无论我做什么,我都无法让它发挥作用。我可以使用'while read'循环让它工作。但我只是好奇为什么我的for循环不再工作了。我很确定我做了一些简单的错误。但我似乎无法弄清楚它是什么。这是我正在尝试的命令的一个变体。我尝试了几种变化,更改引号或某些时候使用和猫,其他时间没有。但每次我得到相同的结果。

$ for x in "cat test.sh" ; do echo $x ; done
cat test.sh
$

2 个答案:

答案 0 :(得分:4)

达到预期目标的基本方法是:

while IFS= read -r line; do echo "$line"; done < test.sh

请参阅http://mywiki.wooledge.org/BashFAQ/001

如果你使用for循环,那么你在每行的空格上遇到 shell word splitting 的问题

答案 1 :(得分:2)

你可以使用,

while read line
do

task 

done < file

for line in 'cat dbs.txt'; 
do

task

done