# Why doesn't 'read' see 3 items?
$ (IFS=','; x="dd,ee,ff"; echo "'$x'"; read a b c <<< $x;\
echo "'$a' '$b' '$c'")
'dd,ee,ff'
'dd ee ff' '' ''
Because you don't quote your variables.
$ ( IFS=','; x="dd,ee,ff"; echo "'$x'"; read a b c <<< "$x";\
echo "'$a' '$b' '$c'")
'dd,ee,ff'
'dd' 'ee' 'ff'
EDIT: When the variable isn't quoted, the expansion causes Word Splitting:
The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting.