【发布时间】:2016-12-16 00:08:45
【问题描述】:
我想使用 node.js 来生成 echo $(python --version),如果我把它放到我的终端中它工作没问题,我会得到类似的东西
Python 2.7.12
但如果我使用以下代码:
var spawn = require('child_process').spawn
var child = spawn('echo', ['$(python --version)'])
child.stdout.on('data', function(b){
console.log(b.toString())
})
我只是将字符串文字回显给我:
$(python --version)
如何转义参数以正确生成,以便获得正确的输出。
编辑:我特别想使用 spawn 和 echo,我想知道是否有解决方案可以正确转义 spawn 参数...
【问题讨论】:
-
这是因为
$()是一个bash 运算符,而child_process 使用的是sh 而不是bash。请参阅stackoverflow.com/questions/32952410/… 在使用 child_process 时设置您的 shell。 -
当您在 shell 中运行
echo $(python --version)时,回显几乎毫无用处。由于python --version不会向标准输出输出任何内容,因此您只是在运行python --version,然后在不带参数的情况下运行echo。这相当于做$(python --version); echo,这意味着回显只是打印一个换行符。
标签: javascript node.js spawn stringescapeutils