Скрипт летит по коду без остановок на wait $pid
Есть такой код (как пример):
#!/usr/bin/env bash
set -x
gnome-terminal -- watch -n 3 df -h &
pid_gnome_watch=$!
echo $pid_gnome_watch
wait $pid_gnome_watch
kill $pid_gnome_watch
echo "It's done!"
ls
set +x
При запуске, выдает такие логи (установил set +- для отладки):
+ set +x
$ ./wait_test.sh
+ pid_gnome_watch=33410
+ echo 33410
33410
+ wait 33410
+ gnome-terminal -- df -h
+ kill 33410
./wait_test.sh: line 7: kill: (33410) - No such process
+ echo 'It'\''s done!'
It's done!
+ ls
[СПИСОК ФАЙЛОВ]
+ set +x
Wait не держит выполнение скрипта до завершения процесса. Команды выполняются одна за другой без какой-либо задержки. Мне нужно, чтобы выполнение скрипта приостановилось дальше, пока не завершится команда gnome-terminal -- watch -n 3 df -h
- с любым статусом, хоть true, хоть false или ещё как-то, лишь бы скрипт ожидал завершения этой команды и гнал уже дальше.
Почему не срабатывает wait?
P.S. Пробовал разные лайфхаки с &&, true … не помогло.
Решение:
#!/usr/bin/env bash
gnome-terminal --wait -- watch -n 3 df -h
[ЛЮБОЙ КОД ДАЛЬШЕ - не выполняется до тех пор, пока команда выше не завершится чем-то]