Файл трубопровода по строкам в несколько переменных чтения

У меня есть файл, содержащий информацию в двух столбцах:

box1 a1
box2 a2

Я пытаюсь прочитать этот файл строки за строкой в ​​read и добавить каждую строку в переменную

На первом проходе $a будет содержать box1, а $b будет содержать a1.

На втором проходе $a будет содержать box2, а $b будет содержать a2 и т.д.

Пример кода, который я использую, чтобы попытаться достичь, таков:

for i in text.txt; do
  while read line; do
    echo $line | read a b;
  done < text.txt;
  echo $a $b;
done

Это дает мне следующие результаты:

box1 a1 box2 a2

Когда я ожидал следующих результатов:

box1 a1
box2 a1

Как я могу это исправить?

Ответ 1

Включение в команду read приводит к тому, что переменные устанавливаются в подоболочке, что делает их недоступными (действительно, они уходят) в остальную часть вашего кода. В этом случае вам даже не нужен цикл for или вторая команда read:

while read -r a b; do
    echo $a $b
done < text.txt