У меня есть программа, которая выводит несколько строк. Я хочу назначить каждой строке разные переменные. Я попытался передать вывод в блок:
my_program | {
read -r foo
read -r bar
read -r baz
}
Кажется, что я могу получить доступ только к этим переменным внутри блока, но я не хочу помещать все внутри блока.
Я также пытался использовать опцию -d с символом, который вряд ли будет отображаться в выводе в качестве аргумента.
IFS=$'\n' read -r -d$'\a' foo bar baz < <(my_program)
Кажется, что работает, за исключением того, что если есть более 3 строк, переменная 'baz' получает третью строку и все лишние строки. На самом деле это не проблема, поскольку я знаю точное количество строк, которые будет выводить моя программа.
Интересно, есть ли лучший способ сделать это.