Ваш вопрос немного неясно, но для того, чтобы читать из нескольких источников параллельно, вам необходимо использовать несколько файловых дескрипторов и, я думаю, замена процесса.
while read line_from_1;
read -u 3 line_from_2; do
echo "From first: $line_from_1"
echo "From second: $line_from_2"
done < <(echo "$first_list") 3< <(echo "$second_list")
(Конечно, вы не должны использовать две переменные, если они не существовавшие ранее, просто поместите код, заполняющий каждую переменную в соответствующем замещении процесса, который питает while
цикл:
done < <(...code for first list...) 3< <(...code for second list...)
)
Как написано, цикл будет успешным, пока второго чтение завершается успешно (статус выхода первого чтения игнорируется). Чтобы зациклиться до тех пор, пока оба успеха, используйте read line_from_1 && read -u 3 line_from_2
.
В цикле, пока либо успешно, вам потребуется несколько более сложный мини-сценарий как while
условие:
while read line_from_1; read1=$?;
read line_from_2; read2=$?;
((read1 == 0 || read2 == 0)); do
UPDATE: вы можете просто использовать здесь строки, если переменные уже вместо замещений процесса. (Я не был уверен, что если 3<<<
было законным.)
while read line_from_1; read -u 3 line_from_2; do
...
done <<< "$first_line" 3<<< "$second_line"
Каковы значения образцов в '$ 1st_list' и' $ 2nd_list'? – anubhava
@anubhava $ 1st_list и $ 2nd_list - это переменные скрипта, которые являются многострочными. Я пытаюсь создать файл csv с этими переменными. Не уверен, что это лучший способ сделать это. Я уточню вопрос. – hfranco
У вас есть два набора строк, которые вы пытаетесь объединить, как именно? 'Line1, line2'? 'Line1field1, line2field1, l1f2, l2f2, ....? –