【发布时间】:2012-01-25 19:20:06
【问题描述】:
在 bash 中,这是有效的:
echo -n $'a\nb\nc\n' | while read x; do echo = $x =; done
while循环了3次
= a =
= b =
= c =
但是想象一个没有常规尾随换行符的文本文件。我认为read 应该仍然适用于所有三行,但事实并非如此。我刚刚得到:
echo -n $'a\nb\nc' | while read x; do echo = $x =; done
= a =
= b =
bash 中的 help read 并没有真正澄清。
注意:我不需要解决这个问题,我可以找到一些自己解决问题的方法。我很好奇,我很想提交一份错误报告——我通常会尽量尊重那些可能没有尾随新行的文件。我在使用 -d 选项阅读时遇到了这个问题。 read -d " " 将拆分为空格而不是换行符,但它会错过最后一个条目,除非它有尾随空格。
(Ubuntu.GNU bash,版本 4.1.5(1)-发布)
【问题讨论】:
-
对于它的价值,你的第二个脚本作为第一个与 ksh 一起工作。祝你好运。
-
我刚刚检查过:
ksh在这种情况下与bash的行为方式相同,@shellter。 -
@codeforester :我确定我在发布之前对此进行了测试,但不再能够访问 UWIN ksh93。我使用的版本也可能与您使用的版本不同,尽管我几乎可以肯定我在 UWIN/ksh 电子邮件组中看到了这个问题(~
标签: bash shell newline built-in