Группировка переменных подстановки команд в подоболочку для запуска в фоновом режиме - PullRequest
0 голосов
/ 17 июня 2019

У меня есть группа переменных, загрузка которых занимает некоторое время, и я хочу запустить их в фоновом режиме, но она отображает переменные как ноль.Этот метод работает для всего, кроме переменных подстановки команд.Я понимаю, что подстановка команд - это уже вложенная оболочка, но мне нужно сгруппировать их и запустить вместе, чтобы я знал, когда загрузка группы завершится.

(Update=$(apt-get update && echo updated);
 Upgrade=$(apt-get upgrade && echo upgraded)) &
echo $Update 
echo $Upgrade

Переменные пусты.

Как правильно сгруппировать их, чтобы получить один pid после завершения фонового процесса.

1 Ответ

2 голосов
/ 17 июня 2019

Во-первых, когда команды помещаются в скобки, они запускаются в subshell , поэтому переменные никогда не назначаются во внешней области видимости.

Во-вторых, вы вообще не можете устанавливать переменные в фоновом режиме:

$ foo=bar &
[1] 17621
[1]+  Done                    foo=bar
$ echo $foo
[empty line]

В-третьих, выполнение (apt-get update && apt-get upgrade) & должно позволить вам делать другие вещи до wait, чтобы они закончили .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...