Из страницы руководства bash выделено курсивом:
wait
wait [-n] [jobspec или pid…]
Подождите, пока дочерний процесс, указанный в каждом pid идентификатора процесса или спецификации задания, не завершится и не вернет статус выхода последней ожидаемой команды.
Думаю, вы потеряли фоновый символ &
:
sleep 5; exit5 = $? & PID5 = $ !; ждать $ PID5; echo $ ?; echo $ exit5
Спящий режим на 5 секунд; как только это будет сделано, установите (нулевой) код выхода в exit5
в качестве фонового процесса; установить идентификатор задания для этого назначения в PID5
; затем дождитесь завершения этого задания; присвоение завершилось успешно, поэтому echo
показывает этот ноль; то последнее эхо
показывает пустую строку, поскольку фоновый процесс (подоболочка) завершился, оставив переменную exit5
неназначенной (пустой).
Возможно, это та ситуация, в которой вы собирались?
sleep 5 & PID5 = $ !; ждать $ PID5; exit5 = $ ?; echo $ exit5
Перевести сна 5
в фоновый режим, сохранив его PID в PID5
. Подождите, пока процесс завершится, затем запишите его код возврата в exit5
, затем повторите сохраненный код возврата.
При использовании -execdir
команда выполняется в каталоге, содержащем совпадение, т.е. в родительском каталоге каталога, имя которого начинается с "iptp".
Вместо этого можно искать .git
с путем, совпадающим с iptp*
:
find -maxdepth 2 -type -d -name .git -path "*/iptp*/*" -execdir git status \;