nodejs spawn "su user -c 'ls -la'" 不工作

nodejs spawn "su user -c 'ls -la'" not working

我无法生成简单的命令行: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 生成这个命令吗?

将您的 "ls -la" 分成数组中的两项。

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

仅当我删除双引号时它才有效

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