为什么 read 内置中的 REPLY 变量会跳过空格?

为什么 read 内置中的 REPLY 变量会跳过空格?
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是什么?

相关内容