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

Running Bash Scripts with arguments through node.js

本文关键字:参数 Bash 脚本 行带 node js 运行 通过      更新时间:2023-09-26

我试图运行一个bash脚本通过node.js与child_process

当我运行

行时,在我的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);

有解决方案吗?

谢谢

这是行不通的,因为每次回显都会发生,只有最后一次回显才会通过管道传输到程序中。

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

见https://linux.die.net/man/1/expect

也可以使用-dname标志来设置这些字段。这比处理交互式提示干净多了。

"cn =马克琼斯,ou = Java, o =甲骨文,c =我们"