Вы видите такое же поведение (и по той же причине ), что и . Почему этот цикл while не распознает последнюю строку?
Как и в этом случае, вы можете изменить поведение, добавив дополнительный тест к условию завершения цикла следующим образом
while read -d, i || [[ -n $i ]]; do...
Пр.
$ echo '0,1,2,3,4,5' | while read -d, i || [[ -n $i ]]; do echo $i; done
0
1
2
3
4
5