Предварительно заполните стандартный ввод для процесса в bash - PullRequest
0 голосов
/ 09 июля 2020

Я хочу, чтобы процесс продолжал читать входные данные из stdin после первоначальной отправки ему строки. Как я могу сделать это в bash?

вот неправильное решение, чтобы объяснить, что я пытаюсь сделать.

echo "$HEADER" | cat - < /dev/stdin

Здесь команда cat должна получить содержимое $HEADER сначала ведите себя так, как должен вести себя cat -.

1 Ответ

5 голосов
/ 09 июля 2020

Вы можете последовательно передавать несколько команд по конвейеру, где первая записывает заголовок, а вторая - просто cat для ретрансляции ввода от stdin к stdout:

{ echo "$HEADER"; cat; } | yourcommand

Проблема с вашим подходом заключается в том, что у вас может быть только один стандартный ввод, а вы пытаетесь использовать два. echo "foo" | cat /dev/stdin /dev/tty мог бы быть вариантом, но это излишне зависит от наличия терминала.

...