为 bash 中的进程预填充标准输入

Pre-fill stdin for a process in bash

我想要一个进程在最初向它发送一个字符串后继续从 stdin 读取输入。我怎样才能在 bash 中做到这一点?

这里有一个不正确的解决方案来解释我正在尝试做的事情。

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

这里的 cat 命令必须先接收 $HEADER 的内容,然后才能像 cat - 那样工作。

您可以按顺序传递多个命令,其中第一个写入 header,第二个只是 cat 以将输入从标准输入中继到标准输出:

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

你的方法的问题是你只能有一个标准输入,而你却尝试使用两个。 echo "foo" | cat /dev/stdin /dev/tty 可能是一个选项,但这不必要地依赖于终端。