如何使用 Unix | 管道(在命令行上)将 Node.js 脚本连接起来?

9 浏览
0 Comments

如何使用 Unix | 管道(在命令行上)将 Node.js 脚本连接起来?

我知道如何使用Node.js流将内容连接在一起,但是如果其中一些脚本是异步的,你如何使用Unix的|将多个脚本连接在一起呢?

例如:

a.js (chmod 0755)

#!/usr/bin/env node
setTimeout(function(){
  console.log(JSON.stringify({ foo: 'bar' }));
}, 10);

b.js (chmod 0755)

#!/usr/bin/env node
console.log(process.argv);

这是输出结果:

$ ./a.js | ./b.js
[ 'node', '/Users/viatropos/tests/b.js' ]
events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write EPIPE
    at errnoException (net.js:883:11)
    at Object.afterWrite (net.js:700:19)

乍一看,似乎有很多问题,所以不确定从哪里开始。有没有办法让它工作?最终目标是能够将./a.jsconsole.log输出传递给./b.js。原因是,大部分时间这些脚本将逐个运行,但有时候将它们连接在一起会很方便,所以理想情况下系统应该能够处理这两种情况。

0