Проблема в том, что вы объявили массив с именем lines
, но затем вы пытаетесь получить к нему доступ, как если бы он был назван line
. Вам необходимо изменить каждое вхождение от ${line[$i]}
до ${lines[$i]}
.
Еще лучше, вы можете обойтись без арифметического цикла for и написать:
for line in "${lines[@]}" ; do
, что позволит вам ссылаться на строку как $line
или "$line"
, а не ${lines[$i]}
.
(Кстати, почему у вас есть эта логика для изменения $IFS
? Кажется, что ее значение по умолчанию будет работать так же хорошо.)