为bash中的进程预先填充stdin



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

这里有一个错误的解决方案来解释我要做什么。

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

在这里,cat命令必须首先接收$HEADER的内容,然后按照cat -的行为进行操作。

您可以按顺序通过管道发送多个命令,其中第一个命令写入标头,第二个命令仅为cat,用于将输入从stdin中继到stdout:

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

您的方法的问题是,您只能有一个stdin,而您尝试使用两个。echo "foo" | cat /dev/stdin /dev/tty本可以是一种选择,但这不必要地依赖于拥有一个终端。

最新更新