Вы конечно думали, что вопрос простой, а на самом деле он не такой уж и простой, как думали вы, ага :)
Смотрите, я всегда делал вот так, и это совершенно беззаботно работало на всех версиях BASH:
s='a.b.c.d'
svIFS="$IFS"
IFS='.'
arr=($s)
IFS="$svIFS"
declare -a arr
svIFS="$IFS"; IFS='.'
read -a arr
IFS="$svIFS"
Ну ок, давайте так что ли:
declare -a arr
s='a.b.c.d'
read -d'.' -a arr
Вопрос в оригинальном звучании: какого хрена?!!
Вопрос, скорректированный цензурой: возможно, я что-то делаю неверно, как сделать так, чтобы всё было ОК?