Node.js 如何在nodejs中存储shell命令的输出并将其用于其他操作
我试图通过在nodejs中执行下面的代码来获得一个helmrelease名称 然后想删除那个版本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) => {
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);
}
});
}
}
});