2012-04-03 3 views
3

예를 들어 나는 간단한 명령Node.js에서 출력을 리디렉션하는 데 '>'을 어떻게 사용합니까?

echo testing > temp.txt 

이에게 복제하고자하는 가정하는 것은 내가

var util = require('util'), 
    spawn = require('child_process').spawn; 

var cat = spawn('echo', ['> temp.txt']); 
cat.stdin.write("testing"); 
cat.stdin.end(); 

을 시도한 것입니다 불행히도 성공하지

+0

https://github.com/ (당신이 [stdoutStream] 설정을 시도 되세요 joyent/node/blob/v0.7.7/lib/child_process.js # L449) 대신에? –

답변

4

명령에 유효한 인수가 아니기 때문에 리디렉션 문자 (>)를 ​​스폰의 인수로 전달할 수 없습니다. 대신 별도의 쉘을주고, 또는이 방법을 어떤 명령 문자열을 실행 산란,의 exec을 사용할 수 있습니다 :

var cat = spawn('echo', ['testing']); 

cat.stdout.on('data', function(data) { 
    fs.writeFile('temp.txt', data, function (err) { 
     if (err) throw err; 
    }); 
}); 
0

할 수 있습니다 중 파이프 노드 콘솔 출력 라 "노드 foo.js> output.txt "또는 fs 패키지를 사용하여 파일 쓰기를 할 수 있습니다.

+0

나는 명령 줄 프로그램과 파이프를 stdin으로 돌리고 싶다고 생각한다. –

0

echo 표준 입력에 대한 옥토퍼스 :

~$ echo "hello" | echo 
~$ 

^이 더 출력 ...

그래서 당신이 시도 할 수있는 것은이 없다 :

var cat = spawn('tee', ['temp.txt']); 
cat.stdin.write("testing"); 
cat.stdin.end(); 

즉 비록 당신에게 도움이 될 것인지 모르겠어요 .

+0

시도 할 때 파일을 쓰지 않습니다. – deltanovember

+0

죄송합니다. 내 대답이 업데이트되었습니다. '>'연산자는 아니지만 지금 파일에 출력합니다. –

관련 문제