nodejs spawn“su user -c'ls -la'”无效

时间:2017-01-09 11:48:53

标签: javascript node.js bash sudo spawn

我无法生成一个简单的命令行:su username -c "ls -la"

这是我的代码:

var childArgs = [
    'username',
    '-c',
    '"ls -la"'
];

var ph = spawn('su', childArgs);

ph.stdout.on('data', function (data) {
    console.log(data);
});

ph.stderr.on('data', function (data) {
    console.log('stderr___' + data);
});

ph.on('close', function (code) {
    console.log('close__' + code);
});

ph.on('error', function (error) {
    console.log('error___' + error);
});

输出:

  

stderr ___ bash:ls -la:command not found

有没有办法通过nodejs生成此命令?

2 个答案:

答案 0 :(得分:0)

拆分你的" ls -la"分成数组中的两个项目。

var childArgs = [
  'username',
  '-c',
  'ls',
  '-la'
];

答案 1 :(得分:0)

只有删除双引号

才有效
var childArgs = [
    'spawnuser',
    '-c',
    'ls -la'
];