我正在尝试在 bash 中编写简单的通知应用程序。我想从 mplayer 读取输出,解析它并通过 notify-send 显示。
我可以使用以下方法从 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 不起作用。