从bash脚本启动节点脚本

时间:2014-04-22 15:10:04

标签: linux node.js bash shell

我的程序是用bash编写的,我想启动一个节点程序来获取它返回的字符串,就像这样:

#!/bin/bash

mystring=$( node getString.js)
mplayer $mystring
谷歌搜索我发现我应该包含

#!/usr/bin/env node

但我需要使用字符串将它赋予mplayer ..任何想法?

解决方案

正如Zac所建议的那样(并且感谢 this link )我以这种方式解决了我的问题:

script.sh

#!/bin/bash 

mplayer ${1}

的script.js

/* do whatever you need */
var output="string"
var sys = require('sys');
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout);  }
exec("./script.sh " + output, puts);

1 个答案:

答案 0 :(得分:1)

考虑简单地编写一个可执行的Node脚本(使用#!/bin/env node行),而不是使用Bash,只需使用Node来运行外部UNIX命令。您可以使用child_process module进行此操作,如this example中所示。在Node脚本中调试shell样式的子命令时,This question也很有用。

如果你的例子真的是你需要在Bash中做的,那么这应该就足够了。 #!/bin/env node行允许您的脚本一旦标记为可执行,就可以作为自己的程序运行,而无需使用node调用。