Node.js 如何在nodejs中存储shell命令的输出并将其用于其他操作

Node.js 如何在nodejs中存储shell命令的输出并将其用于其他操作,node.js,Node.js,我试图通过在nodejs中执行下面的代码来获得一个helmrelease名称 然后想删除那个版本 var sys = require('sys') var spawn = require('child_process').spawn; output = spawn('helm',['list', '-q', '--namespace', 'd35nb8']); release = output.stdout.on('data', (data) => {

我试图通过在nodejs中执行下面的代码来获得一个helmrelease名称

然后想删除那个版本

var sys = require('sys')
var spawn = require('child_process').spawn;

output = spawn('helm',['list', '-q', '--namespace', 'd35nb8']);

release = output.stdout.on('data', (data) => {
                var test = process.stdout.write(data.toString());
                process.stdout.write(data.toString()) 
                spawn('helm',['delete', test]);

});
此处的代码可以获取头盔版本名称,但无法删除该版本

将输出编码为

oot@5a857d30a4c1:/opt/api# nodejs test2.js
inside moving further
(node:2272) [DEP0025] DeprecationWarning: sys is deprecated. Use util instead.
kilted-markhor
kilted-markhor
如何在nodejs中实现这种逻辑通常情况下,spawn需要更复杂的子进程管理。对于所描述的用例,我建议使用simple exec:


您是否尝试过使用spawn'helm',['delete',data.toString];?这没有帮助
const exec = require('child_process').exec;

exec('helm list -q --namespace d35nb8'], (err, stdout, stderr) => {
    if (err) {
        console.log('helm list failed', err);
    } else {
        const releases = stdout.split('\n');  // or whatever is the separator
        for (const r of releases) {
            console.log('deleting release', r);
            exec('helm delete ' + r, (err2) => {
                if (err2) {
                    console.log('helm delete failed', err2);
                }
            });
        }
    }
});