如何将嵌套的管道式bash命令转换为child_process.spawn

时间:2018-11-01 17:42:54

标签: node.js

我有一个非常复杂的命令。

openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | base64

我查看了node.js文档,发现管道运算符转换为两个不同的生成命令(here, second example)。但是“ <”运算符一无所知,我也不知道如何将此嵌套命令转换为spawn语句。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。基本上将您的一个或多个命令包装到一个bash脚本(.sh文件)中,然后使用bash命令生成该文件。

例如:

rnd.sh file
--------------------------
#!/usr/bin/env bash

openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | base64

在您的node.js脚本中生成该脚本,然后运行

rnd.js file
--------------------------
const spawn = require('child_process').spawn;
const sp = spawn('bash', [__dirname + '/rnd.sh']);

sp.stdout.on('data', function(data){
// process stdout
}