我的程序是用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);
答案 0 :(得分:1)
考虑简单地编写一个可执行的Node脚本(使用#!/bin/env node
行),而不是使用Bash,只需使用Node来运行外部UNIX命令。您可以使用child_process module进行此操作,如this example中所示。在Node脚本中调试shell样式的子命令时,This question也很有用。
如果你的例子真的是你需要在Bash中做的,那么这应该就足够了。 #!/bin/env node
行允许您的脚本一旦标记为可执行,就可以作为自己的程序运行,而无需使用node
调用。