Как указал Игнасио, ваш tail | while
создает подоболочку. Задержка вызвана тем, что она ожидает записи следующей строки в файл журнала, прежде чем все закроется.
Вы можете добавить эту строку непосредственно перед вашей командой exit
, если вы предпочитаете не использовать подстановку процесса:
kill -SIGPIPE $$
К сожалению, я не знаю ни одного способа управления кодом выхода с помощью этого метода. Это будет 141, что составляет 128 + 13 (номер сигнала SIGPIPE
).
Если вы пытаетесь сделать запуск демона зависимым от запуска другого, вероятно, есть лучший способ сделать это.
Кстати, если вы действительно пишете сценарий Bash (которым нужно было бы использовать <()
подстановка процесса), вы можете написать if
следующим образом: if [[ $line == *launchd* ]]
.