Возвращение курсора в командную строку bash после того, как скрипт возвращает отложенный вывод

Возвращение курсора в командную строку bash после того, как скрипт возвращает отложенный вывод
Возвращение курсора в командную строку bash после того, как скрипт возвращает отложенный вывод - nancyphilip @ Unsplash

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

Вот сценарий:

#!/bin/bash
cd /opt/jetty/jetty-distribution-7.4.5.v20110725/
if [ "$1" = "-stop" ]
then
    java -DSTOP.PORT=8079 -DSTOP.KEY=something -jar start.jar --stop
else
    java -DSTOP.PORT=8079 -DSTOP.KEY=something -jar start.jar &
fi

Вот результат:

[user@machine ~]# jetty
[user@machine ~]# 2011-08-11 14:47:34.818:INFO::jetty-7.4.5.v20110725
2011-08-11 14:47:34.866:INFO::Deployment monitor /opt/jetty/jetty-distribution-7.4.5.v20110725/webapps at interval 1
2011-08-11 14:47:34.878:INFO::Deployment monitor /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts at interval 1
2011-08-11 14:47:34.883:INFO::Deployable added: /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts/javadoc.xml
2011-08-11 14:47:34.934:INFO::started o.e.j.s.h.ContextHandler{/javadoc,file:/opt/jetty/jetty-distribution-7.4.5.v20110725/javadoc}
2011-08-11 14:47:34.935:INFO::Deployable added: /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts/test.xml
2011-08-11 14:47:35.011:INFO::Extract jar:file:/opt/jetty/jetty-distribution-7.4.5.v20110725/webapps/test.war!/ to /tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp
2011-08-11 14:47:35.645:INFO::started o.e.j.w.WebAppContext{/,file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/},/opt/jetty/jetty-distribution-7.4.5.v20110725/webapps/test.war
2011-08-11 14:47:36.127:INFO:org.eclipse.jetty.servlets.TransparentProxy:TransparentProxy @ /javadoc to http://download.eclipse.org/jetty/stable-7/apidocs
2011-08-11 14:47:36.199:INFO::Started [email protected]:8080 STARTING

И курсор оказывается на пустой новой строке чуть ниже. Есть ли способ предотвратить это? Я новичок в написании сценариев bash, есть ли что-то, что я должен делать, чего не делаю?

Вы не можете легко предотвратить это - bash вообще не получает никакого сигнала, когда фоновый процесс пишет в терминал, только когда он полностью завершается. (SIGTTOU передается только пишущему процессу, в данном случае Java, который не имеет никакого контроля над тем, когда выводится подсказка...)


NevaDev, 27 мая 2023 г., 18:28