Для этой конкретной задачи вы можете использовать sed вместо head - или вы можете использовать awk вместо head:
some_command | awk '{print} /search_term/{exit}'
Выведите строки, но, если вы найдете строку, соответствующую поисковому запросу, выйдите (и после этого больше не обрабатывайте строки).
Более общее решение проблемы, которую вы описываете:
some_command | tee >(command2) | command3
или же
some_command | tee >(command2) >(command3)
Они будут работать в bash , но, вероятно, не слишком много других оболочек (включая sh).
>(command) дает вам дескриптор файла для канала для command запуска процесса.
Как вы, вероятно, знаете, tee позволяет вам брать поток данных и записывать его в нескольких местах.
Но ваша проблема тоньше, чем то, что вы сказали.
Ты не пытаешься сделать

ты пытаешься сделать

где команда head (соответствующая C на диаграмме) получает входные данные от « some_command » (A), но также имеет аргумент командной строки, установленный из выходных данных awk (B).
Я подозреваю, что общее решение для этого было бы намного хитрее.