使用nodejs将javascript变量传递给shell命令

前端之家收集整理的这篇文章主要介绍了使用nodejs将javascript变量传递给shell命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用nodejs应用程序,我需要将多行字符串传递给shell命令.我不是shell脚本的专家,但是如果我在我的终端中运行这个命令就可以了:

$((cat $filePath)| dayone new)

这是我为nodejs方面所做的. dayone命令确实有效,但没有任何信息传输到它.

const cp = require('child_process');
const terminal = cp.spawn('bash');

var multiLineVariable = 'Multi\nline\nstring';

terminal.stdin.write('mul');
cp.exec('dayone new',(error,stdout,stderr) => {
    console.log(error,stderr);
});
terminal.stdin.end();

谢谢你的帮助!

最佳答案
在这里,您使用spawn启动bash,但之后您正在使用exec来启动Dayone程序.它们是独立的子进程,并且不以任何方式连接.

‘cp’只是对child_process模块​​的引用,spawn和exec只是启动子进程的两种不同方式.

你可以使用bash并将你的dayone命令写入stdin以调用dayone(正如你的代码片段似乎试图做的那样),或者你可以直接用exec调用dayone(记住exec仍然在shell中运行命令) :

var multiLineVariable = 'Multi\nline\nstring';

// get the child_process module
const cp = require('child_process');

// open a child process
var process = cp.exec('dayone new',stderr);
});

// write your multiline variable to the child process
process.stdin.write(multiLineVariable);
process.stdin.end();

猜你在找的JavaScript相关文章