从bash脚本启动节点脚本
我有我的程序在bash中,我想启动一个节点程序来获取它返回的string,就像这样:
#!/bin/bash mystring=$( node getString.js) mplayer $mystring
谷歌search,我发现我应该inlcude
#!/usr/bin/env node
但我需要使用string给mplayer ..任何想法?
解
正如Zacbuild议的(并且感谢这个链接 )我以这种方式解决了我的问题:
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);
考虑简单地编写一个可执行的Node脚本(使用#!/bin/env node
行),而不是使用Bash,只需使用Node来运行外部UNIX命令。 您可以使用child_process模块 ,如本例所示 。 在Node脚本中debuggingshell风格的子命令时, 这个问题也很有帮助。
如果你的例子真的是你需要在Bash中做的,这应该是足够的。 #!/bin/env node
行允许您的脚本一旦被标记为可执行文件就可以作为自己的程序运行,而不必与node
一起调用。