Могу ли я дождаться завершения всех разветвленных процессов команды?

Это образец

zypper --non-interactive --quiet addrepo --refresh -p 90 http://packman.inode.at/suse/openSUSE_Leap_15.0/ 'packman'
zypper --gpg-auto-import-keys refresh
zypper --non-interactive dist-upgrade --allow-vendor-change --from packman
zypper --non-interactive install vlc vlc-codecs

Конечно, вы можете включить больше параметров, таких как --auto-agree-with-licenses, но помните, что это имеет значение, до или послеinstall

0
08.03.2020, 17:54
1 ответ

Вы можете заставить BAR выводить свой PID в файл; затем проверьте, пока процесс с этим PID больше не будет запущен. Что-то вроде этого:

на БАР.ш:

#!/bin/bash
(echo $$)>/tmp/BAR.pid
...

на runFOO.sh:

#!/bin/bash
# possibly remove pid from previous run:
if [ -f /tmp/BAR.pid ]; then
  rm /tmp/BAR.pid
fi

# launch FOO
./FOO.sh &

# make sure BAR has started:
while [ ! -f /tmp/BAR.pid ]; do
  sleep 1
done

# wait for BAR to finnish: 
while [ $(kill -s 0 $( cat /tmp/BAR.pid ) 2>&1 | wc -l) -eq 0 ]; do
  sleep 1;
done
0
28.04.2021, 23:21

Теги

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