0

测试.txt:

1 1
2 2
3 3

测试.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

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

4

1 回答 1

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

...这就是为什么你得到你得到的输出。

于 2012-05-10T20:21:27.930 回答