将脚本中的stdin重定向到另一个进程

时间:2014-05-12 09:04:47

标签: bash pipe

假设我有一个bash脚本通过stdin获取一些输入。现在在该脚本中我想启动另一个进程并让该进程通过其stdin获取相同的数据。


#!/bin/bash

echo STDIN | somecommand

现在" echo STDIN"上面的事情显然是假的,问题是如何做到这一点?我可以使用read从stdin中读取每一行,将其附加到临时文件中,然后

cat my_temp_file | somecommand

但这就是某种方式。

2 个答案:

答案 0 :(得分:9)

当您编写bash脚本时,标准输入会被其中任何试图读取它的命令自动继承,因此,例如,如果您有一个脚本myscript.sh包含:

#!/bin/bash

echo "this is my cat"
cat
echo "I'm done catting"

然后输入:

$ myscript.sh < myfile

您获得:

this is my cat
<... contents of my file...>
I'm done catting

答案 1 :(得分:2)

可以tee帮助你吗?

echo 123 | (tee >( sed s/1/a/ ) >(sed s/3/c/) >/dev/null )