nodejs 응용 프로그램에서 작업 중이고 여러 줄 문자열을 쉘 명령으로 파이프해야합니다. 나는 쉘 스크립트에서 프로 아니에요하지만 난 내 터미널에서이 명령을 실행하면 그것은 잘 작동 :javascript 변수를 nodejs를 사용하여 쉘 명령으로 파이프
$((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, stdout, stderr);
});
terminal.stdin.end();
어떤 도움을 주셔서 감사합니다!
이것은 완벽하게 작동하지만 왜 확실하지 않습니다. 'stdin'에 쓰기 전에'cp.exec'를 호출하는 것은 읽을 것이 있기 전에'dayone' 명령을 실행하는 것처럼 보입니다. 'dayone' 명령이 입력을 얻는 방법을 설명 할 수 있습니까? 감사! – danseethaler
exec 명령은 dayone 완료/종료를 기다리지 않고 node.js 블록에서 아무것도하지 않습니다. Exec은 프로세스를 시작하고 프로세스는 stdin에서 읽으려고 시도합니다. 사용할 수있는 것이 없다면 무언가가있을 때까지 차단 될 것이며, 우리가 프로세스를 시작하자마자 제공 할 것입니다. 명령 줄에서 손으로 명령을 실행 한 것처럼 입력 한 내용이 표준 입력에 도달 할 때까지 차단됩니다. –
완벽! 정말 고마워! – danseethaler