通过node.js运行带有参数的Bash脚本

时间:2016-11-10 15:37:02

标签: javascript node.js bash child-process

我试图通过带有child_process

的node.js运行bash脚本

当我运行行

时,我的bash脚本中没有工作的部分
(echo "PASSWORD"; echo "PASSWORD"; echo "NAME"; echo "ORGANIZATION"; echo "ORGANIZATION"; echo "CIUDAD"; echo "REGION"; echo "PAIS"; echo "yes";echo) |keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

基本上,我在尝试运行keytool时会尝试回答不同的选项,但是它无法正常工作(等待选项的过程很紧张)

在节点中我正在运行

 exec('./script.sh', {
  cwd: '/Users/MY/Directory'
}, (error, stdout, stderr) => {
      if (error) {
          console.error(`exec error: ${error}`);
          return;
      }
      console.log(`stdout: ${stdout}`);
      console.log(`stderr: ${stderr}`);
  }).stderr.pipe(process.stderr);

有解决方案吗?

由于

1 个答案:

答案 0 :(得分:1)

当每个回声发生并且只有最后一个回声被传送到您的程序时,这不会起作用。

我处理此问题的方法可能是expect

请参阅https://linux.die.net/man/1/expect

您也可以使用-dname标志来设置这些字段。这比处理交互式提示更清晰。

" cn = Mark Jones,ou = Java,o = Oracle,c = US"