类似的构造IFS= read -r var
通常被视为 Bash 中将一行输入读入变量的“规范”方式(例如在 unix.SE 上)。
很明显,为什么设置一个空$IFS
通常可能是有益的,即控制(防止)分词。但是,我无法理解为什么在读入单个变量时具体需要这样做?bash 手册说:
如果单词数多于姓名,则剩余的单词及其中间分隔符将分配给姓氏
因此,即使不更改 IFS,如果read
传递单个变量,那么它最终不应该根据需要将整行保存到该变量中吗?$IFS
这种情况下设置空的原因是什么?
类似的构造IFS= read -r var
通常被视为 Bash 中将一行输入读入变量的“规范”方式(例如在 unix.SE 上)。
很明显,为什么设置一个空$IFS
通常可能是有益的,即控制(防止)分词。但是,我无法理解为什么在读入单个变量时具体需要这样做?bash 手册说:
如果单词数多于姓名,则剩余的单词及其中间分隔符将分配给姓氏
因此,即使不更改 IFS,如果read
传递单个变量,那么它最终不应该根据需要将整行保存到该变量中吗?$IFS
这种情况下设置空的原因是什么?
考虑这个示例(取消设置
$IFS
以便使用默认值):或者当它包含不同的值时(在 bash 或除 zsh 之外的其他类似 POSIX 的 shell 中):
问题中提到的帖子涵盖了这种情况(添加了强调):