Причина, по которой IFS не устанавливается, заключается в том, что bash не видит это как отдельную команду ... вам нужно поставить перевод строки или точку с запятой после команды, чтобы завершить ее:
$ cat /tmp/ifs.sh
LINE="7.6.5.4"
IFS='.' read -a ARRAY <<< "$LINE"
echo "$IFS"
echo "${ARRAY[@]}"
$ bash /tmp/ifs.sh
7 6 5 4
но
$ cat /tmp/ifs.sh
LINE="7.6.5.4"
IFS='.'; read -a ARRAY <<< "$LINE"
echo "$IFS"
echo "${ARRAY[@]}"
$ bash /tmp/ifs.sh
.
7 6 5 4
Я не уверен, почему первый способ не был синтаксической ошибкой.