echo " a" | while read; do echo "$REPLY"; done
将输出包含前导空格的“.....a”。然而,
echo " a" | while read line; do echo "$line"; done
将输出“a”,并跳过前导空格(好的,因为分词)。
看起来 REPLY 变量与 IFS 设置为 null 具有相同的效果:
echo " a" | while IFS= read line; do echo "$line"; done
从bash手册中我找不到原因。你有什么想法?谢谢。
答案1
从read
手册页:
从标准输入(或从文件)读取一行并分配字)变量名称。
如果没有提供姓名,线read 被赋值给变量回复。
所以,$REPLY
总是整个线,而分配的变量总是字。否则它将无法工作,例如如果您有多个单词,那会$REPLY
是什么?