Я пишу сценарий оболочки, где мне нужно извлечь содержимое файла, который имеет тип:
type1 | valueA
type2 | valueB
type1 | valueC
type2 | valueD
type3 | valueE
....
typen | valueZ.
Для каждого типа в column_1
у меня есть целевая переменная, которая объединяет значения того же типа, чтобы получить такой результат:
var1 =valueA, valueC
var2 = valueB, valueD
var3 = valueE
.....
Сценарий реализует что-то вроде этого:
var1="HELLO"
var2="WORLD"
...
cat $file | while read record; do
#estract column_1 and column_2 from $record
if [ $column_1 = "tipo1" ]; then
var1="$var1, column_2" ## column_2 = valueB
elif ....
....
fi
done
Нокогда я пытаюсь использовать значение любой из переменных, где я прикован цепью column_2
:
echo "$var1 - $var2"
, я получаю исходные значения:
HELLO - WORLD.
В интернете я читаю, чтопроблема связана с тем, что конвейер создает подоболочку, в которую копируются фактические значения.
Есть ли способ решить эту проблему !?
Прежде всего, существует способ, который подходит для всех типов оболочек, на самом деле этот сценарий должен выполняться потенциально на разных оболочках !?Я не хочу использовать поддержку файлов для записи частичных результатов.