Файл трубопровода по строкам в несколько переменных чтения
У меня есть файл, содержащий информацию в двух столбцах:
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