如何在其输出上运行非阻塞bash命令并阻止?

时间:2014-04-30 00:11:27

标签: bash blocking

我试图编写一个运行程序的脚本,等待程序的某个输出,然后继续执行(并使程序继续运行。) 我目前的代码似乎没有输出任何东西,sed永远不会返回true。 这个回声" Peerflix开始了#34;但那就是它。

exec 3< <(peerflix $1 -p 8888)
echo "Peerflix started."
sed '/server$/q' <&3
echo 'Matched'

1 个答案:

答案 0 :(得分:1)

使用pipes

使用mkfifo创建管道,并在非阻塞命令中将程序的输出流式传输给它。然后使用阻止sed从该管道中读取。

有点像(没有测试 - 我没有peerflix):

mkfifo myfifo
peerflix $1 -p 8888 > myfifo &
echo "Peerflix started."
sed '/server$/q' myfifo
echo 'Matched'
rm myfifo