运行 块 bash / shell 在节点的生成中
Run block of bash / shell in node's spawn
我正在编写一个命令行实用程序,我需要标准输出来写入 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] 平台上运行。
所有主要的 POSIX-like shells 通过 -c
选项接受命令字符串。
我正在编写一个命令行实用程序,我需要标准输出来写入 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] 平台上运行。
所有主要的 POSIX-like shells 通过 -c
选项接受命令字符串。