我希望一个进程在最初向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
本可以是一种选择,但这不必要地依赖于拥有一个终端。