如何将上一个命令的结果作为变量传递给节点?

如何将上一个命令的结果作为变量传递给节点?

我正在尝试创建一个脚本来解码来自 redis 的数据。我可以将其设为节点脚本,但我只是希望它尽可能简单。

这是我到目前为止所得到的。

redis-cli GET "d1g8y" | xargs -i node -e "require('zlib').gunzip(Buffer.from('{}', 'base64'), function(err, string) { console.log(string.toString()); })"

但这不起作用。如何从该命令获取结果redis-cli GET "d1g8y"并将其放入该脚本中Buffer.from('$VARIABLE_FROM_PREVIOUS_COMMAND', 'base64')

这就是我压缩数据的方式

const zlib = require('zlib');

const zipAsync = Promise.promisify(zlib.gzip, {context: zlib});
return zipAsync(Buffer.from(value)).then(console.log);

谢谢。

答案1

为什么要使用node?有点像用榴弹炮猎鹿,不是吗?

redis-cli GET "d1g8y" | zcat | base64 --decode

zcat会将 gzip 压缩的数据转换为纯文本,在您的情况下,它恰好是一个 base64 编码的字符串,因此我们只需将其传输到解码器中即可。

相关内容