![](/img/trans.png)
[英]Bash + Node.js + stdin/stdout redirection: error "not a tty"
[英]Node.js equivalent of bash pipe stdout redirection
我正在使用此命令来获取git存储库中的内容:
git archive --remote=ssh://git@git/repository.git HEAD filename.txt | tar xvOf -
命令的第一部分将存储库中filename.txt
的内容返回到标准输出。 第二部分是为了删除git自动添加到内容中的pax_global_header
。
我想将此命令实现为在node.js
v0.10.36
上生成的v0.10.36
这是我尝试过的:
var git = spawn("git", ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
var tar = spawn("tar", ["xvOf", "-"]);
var out = [];
tar.stdout.pipe(git.stdout).on('data', function(data){
var string = data.toString();
if(string) {
out.push(string);
}
});
但是当我运行它时,我在数据处理程序中获得的字符串就像git
输出从不通过tar
进程传递
我究竟做错了什么?
发布此内容后10秒钟,我就找到了答案...
我应该做的是将git
的输出传递到tar
的输入中,并使用tar
输出的流
所以我的代码看起来像这样:
var git = spawn("git", ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
var tar = spawn("tar", ["xvOf", "-"]);
var out = [];
git.stdout.pipe(tar.stdin);
tar.stdout.on('data', function(data){
var string = data.toString();
if(string) {
out.push(string);
}
});
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.