eval переменная=команда в фоновом режиме

с помощью AWK,

  awk -F '"' '{if (NF==3) print $2}' file
  • использование в качестве разделителя
  • печать второго файла$2
  • NF==3если максимальное количество полей равно 3
0
28.07.2020, 16:26
2 ответа

Фоновые команды выполняются в подоболочке. Команды подоболочки не влияют на среду (или внутренние переменные )родительской оболочки.

0
18.03.2021, 23:16

Вы не можете получить такое значение. Фоновый процесс должен запускаться в другом процессе, иначе он не может быть независимым от основной оболочки. И поэтому он не может сохранять значения обратно «вверх» в основную оболочку.

Вместо этого вы можете сохранить выходные данные в файле (или нескольких файлах ).

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]}
1
18.03.2021, 23:16

Теги

Похожие вопросы