Я понятия не имею, насколько сложны ваши входные данные, но вы можете использовать что-то вроде awk для чтения каждой строки, когда она приходит, и сравнивать ее с известным значением.
$ for i in 1 2 3 4 5; do echo $i; sleep 1; done | \
awk '{print "Out:", $0; fflush(); if ($1==2) exit(0)}'
Out: 1
Out: 2
In в этом случае я подаю поток с задержкой по времени и awk работает до тех пор, пока первая переменная на входе (единственная переменная здесь) не будет равна 2, а затем выйдет и при этом остановит поток.