我正在编写命令行实用程序,我需要 stdout 写入 TTY 或使用 {stdio: 'inherit'}
我一直在使用 exec
但它不会削减它。我需要一个 spawn 进程来执行下面的 echo 命令。我知道 spawn 使用给定的命令启动子进程,并且您传入参数,但我需要它只采用像这样的以行分隔的命令字符串。这就是我目前正在向 exec 提供的内容。这可能吗?
const spawn = require('child_process').spawn
const child = spawn(`
echo "alpha"
echo "beta"
`)
child.stdout.on('data', (data) => {
console.log(`stdout: ${data}`)
});
child.stderr.on('data', (data) => {
console.log(`stderr: ${data}`)
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`)
});
最佳答案
spawn()
不涉及 shell,因此为了让它执行 shell 命令,您必须显式调用 shell 可执行文件并将 shell 命令作为参数传递:
const child = spawn('/bin/sh', [ '-c', `
echo "alpha"
echo "beta"
` ])
请注意,我使用 /bin/sh
而不是 /bin/bash
是为了让您的命令在更广泛的 [Unix-like] 上运行平台。
所有主要的 POSIX 类 shell 都通过 -c
选项接受命令字符串。
关于node.js - 在 Node 的 spawn 中运行 bash/shell block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38045360/