Предполагая, что код вашей Java просто выходит на своем собственном, когда он получает SIGPIPE
, вы можете просто перенаправить вывод в grep
и имеете grep exit as soon as it sees a match. Assuming you are using a version of
Grep that supports the
-m option (GNU and BSD
Grep grep` выхода после первого матча:
java ... | grep -m 1 'Results:'
One небольшой улов: из-за буферизации ваша программа java
может продолжать работать в течение непродолжительного времени до того, как grep
фактически увидит линию «Результаты».
Используя только стандартные grep
, вы можете использовать tee
как для вывода изображения и выхода после обнаружения любого матча.
java ... | grep 'Results:' | tee | grep -q '.*'
Это страдает тот же вопрос буферизацию, но усиливается: может не только первый grep
придется подождать, прежде чем она на самом деле получает строку «Результаты», но tee
может так же нужно ждать, прежде чем она, наконец, получает ту же линию , Кроме того, если линия слишком мала, первый grep
никогда не сможет производить больше вывода, требуя, чтобы вы ожидали java
, чтобы выйти естественным образом до того, как tee
когда-либо видит какой-либо вход.
введите код, который вы уже писали. –
Это своего рода проблема.Я написал основную логику скрипта (java-команду, которую я пытаюсь запустить, структуру цикла для запуска java-команды на основе файла конфигурации, который находится в каталоге conf и т. Д.). Но когда дело доходит до логики I я перечисляю выше, я даже не знаю, с чего начать ... Я достаточно базовый в своем знании/опыте bash –