我想在bash中写简单的通知应用程序。我想从mplayer读取输出,解析它并通过notify-send来显示。写mplayer的输出到fifo并阅读它
我可以使用此获得所需的mplayer从信息:
mplayer <url> | grep ICY
,然后解析使用SED。
我创建了命名管道,告诉mplayer写它,然后我正在读它。不幸的是,它不起作用。这里是我的脚本:
$fifo=~/.rp/fifo
mkfifo $fifo
mplayer <url> 2>/dev/null | grep ICY 1> $fifo &
while read line < $fifo; do
echo $line
done
wait
程序不断从$ FIFO等待输入。我试图在其他终端以下,而这个脚本运行:
运行
echo "Test" > .rp/fifo
终端与运行脚本显示了 “测试”
运行
echo "ICY" | grep ICY > .rp/fifo
也作品。
运行
mplayer <url> | grep ICY > .rp/fifo
,它不工作。
我上面说过,mplayer | grep工作正常。 grep> $ fifo正常工作。我不明白为什么mplayer | grep> $ fifo不起作用。
感谢您的回答! “ - 线缓冲”为我做了诡计。 :-) –