for loop和head不按预期工作

时间:2012-05-10 20:19:19

标签: shell unix

的test.txt:

1 1
2 2
3 3

test.sh:

for ln in $(head -3 test.txt)
do
    echo "New line: $ln";
done

我希望:

New line: 1 1
New line: 2 2
New line: 3 3

...但输出是:

New line: 1
New line: 1
New line: 2
New line: 2
New line: 3
New line: 3

更改为:

"$(head -3 test.txt)"

......导致:

New line: 1 1
2 2
3 3

这有什么问题?显然,空间是问题所在。任何简单的解决方法?非常感谢提前。

1 个答案:

答案 0 :(得分:4)

如果您想逐行阅读,请尝试以下方法:

head -3 test.txt | while read line; do
  echo $line
done

通常,shell使用空格来标记事物,所以如果你这样做:

for ln in $(head -3 test.txt)

最终看起来像这样:

for ln in 1 1 2 2 3 3

...这就是你获得输出的原因。