【发布时间】:2012-10-28 18:19:43
【问题描述】:
我正在尝试在 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带有运行脚本的终端显示“Test”
-
运行
echo "ICY" | grep ICY > .rp/fifo也可以。
-
运行
mplayer <url> | grep ICY > .rp/fifo它不起作用。
我上面说的是mplayer的组合| grep 工作正常。 grep > $fifo 工作正常。我不明白为什么mplayer | grep > $fifo 不起作用。
【问题讨论】: