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

redirect /dev/stdin as parameter to node script

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

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

有什么方法可以让它工作吗?

您可以通过一些 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 以便它从标准输入读取消息而不是使用命令行参数,在这种情况下您可以直接通过管道传输到 Node 进程(并且它也不需要启动一个每个传入消息的新节点进程)。