У меня есть текстовый файл, который содержит текстовые строки, разделенные пустой строкой текста. Я хочу поместить содержимое этого файла в массив и использовать пустую строку в качестве разделителя. Я попробовал IFS="\n" (или "\r\n" и т. д.), но не смог заставить его работать, поэтому вместо этого я подумал, что заменю любую пустую строку символом, которого нет в файле, поэтому Я поднял испанский перевернутый вопросительный знак (\xBF)
sed 's/^$/'$(echo -e "\xBF")'/'))
Итак, это работает, у меня есть символ, который я буду использовать, чтобы нарезать файл и поместить его в массив (немного случайного трюка, но эй, это всего лишь один из способов сделать это ..)
Теперь мне нужно изменить $IFS, чтобы он использовал перевернутый вопросительный знак для нарезки данных для массива.
Если я наберу
IFS=$(echo -e "\xBF")
в командной строке работает нормально
echo "$IFS"
¿
Но если я наберу эту команду с конечным read -a, она ничего не сделает:
[user@machine ~]$ IFS=$(echo -e "\xBF") read -a array <<< "$var"
[user@machine ~]$ echo "$IFS"
[user@machine ~]$
Так что это странно, потому что $var имеет значение.
Еще более удивительно, когда я проверяю значение IFS сразу после получения:
[user@machine ~]$ echo -n "$IFS" | od -abc
0000000 sp ht nl
040 011 012
\t \n
0000003
[user@machine ~]$
Что является значением по умолчанию для IFS.
Я почти уверен, что для IFS можно использовать любой символ, не так ли?
В качестве альтернативы, если у вас есть какой-нибудь трюк в рукаве, чтобы разделить файл в массиве с разделением на основе пустых строк, мне интересно! (все же я хотел бы добраться до сути этого ради понимания).
Большое спасибо и хороших выходных :)