Bash ожидает всех подпроцессов скрипта

Довольно поздно для этого, но для потомков я хотел бы отметить, что вы можете сделать это:

awk '
   BEGIN 
   {
       while(getline < FILENAME)
       {    
           # do first pass stuff
       }
       close(FILENAME)
   }
   
   {
        # do second pass stuff
   }
' file

Если вы хотите сделать больше проходов, вы можете close(FILENAME)после первого цикла while, а затем выполнить второй.

3
12.09.2019, 10:10
2 ответа

Да, достаточно использовать один waitбез аргументов в конце, чтобы дождаться завершения всех фоновых заданий.

Обратите внимание, что фоновые задания, запущенные в подоболочке, необходимо будет ожидать в той же подоболочке, в которой они были запущены. В коде, который вы показываете, такого экземпляра нет.

Также обратите внимание, что вопрос , на который вы ссылаетесь на , касается проверки состояния завершения фоновых заданий. Это потребует выполнения waitодин раз для каждого фонового задания (с PID этого задания в качестве аргумента ).

8
27.01.2020, 21:24

По моему мнению, хотя одного ожидания без параметров должно быть достаточно, это не является хорошей практикой (ретрансляции поведения по умолчанию ). Я бы собирал pid, возвращаемый каждым вызовом, и явно ждал этих pid.

-2
27.01.2020, 21:24

Теги

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