将/ dev / stdin重定向为节点脚本的参数

时间:2015-12-17 11:14:42

标签: node.js bash shell raspberry-pi

我有一个节点脚本,通常称为

node emitter.js "some message"

现在我正在使用trl_fm和multimon_ng来接收和解码一些无线电消息。我设法使用如下命令将输出重定向到/ dev / stdin:

rtl_fm -M fm -f 81.200M -s 21 | multimon-ng -t raw -a POCSAG2400 -f alpha /dev/stdin

通过这种方式,我得到了一种控制台日志,解码后的消息一旦被接收就会打印出来。

我想要实现的是每次收到消息时都要调用emitter.js并将此消息作为参数传递给emitter.js,但我无法弄清楚如何获取此消息工作。

我尝试过的事情:

rtl_fm -M fm -f 81.200M -s 21 | multimon-ng -t raw -a POCSAG2400 -f alpha /dev/stdin | node emitter.js

rtl_fm -M fm -f 81.200M -s 21 | multimon-ng -t raw -a POCSAG2400 -f alpha /dev/stdin > node emitter.js

rtl_fm -M fm -f 81.200M -s 21 | multimon-ng -t raw -a POCSAG2400 -f alpha /dev/stdin >> node emitter.js

有什么方法可以让它发挥作用吗?

1 个答案:

答案 0 :(得分:1)

您可以通过一些shell脚本来连接所有内容:

#!/bin/sh

rtl_fm -M fm -f 81.200M -s 21 | \
multimon-ng -t raw -a POCSAG2400 -f alpha /dev/stdin | \
while read message
do
  node emitter.js "$message"
done

或者您可以修改emitter.js以便它从stdin读取消息而不是使用命令行参数,在这种情况下,您可以直接管道到Node进程(并且它也将消除启动新节点的需要)每个传入消息的过程。)