с помощью AWK,
awk -F '"' '{if (NF==3) print $2}' file
“
в качестве разделителя $2
NF==3
если максимальное количество полей равно 3 Фоновые команды выполняются в подоболочке. Команды подоболочки не влияют на среду (или внутренние переменные )родительской оболочки.
Вы не можете получить такое значение. Фоновый процесс должен запускаться в другом процессе, иначе он не может быть независимым от основной оболочки. И поэтому он не может сохранять значения обратно «вверх» в основную оболочку.
Вместо этого вы можете сохранить выходные данные в файле (или нескольких файлах ).
for name in a b c d; do
for i in {1..12}; do
printf "test_${name}_${i}=%s\n" "$(some command "$name" "$i")" >> output &
done
done
wait
и если вы хотите, чтобы они были в переменных оболочки, вы можете прочитать их обратно из файла. Здесь, используя ассоциативный массив в Bash:
declare -A outputs
while IFS== read -r key value; do
outputs["$key"]="$value"
done < output
echo ${outputs[test_b_7]}