我看到如何使用Node.js流将各种东西连接在一起,但是如何使用Unix将多个脚本连接在一起|,因为其中一些脚本可以是异步的?
$ ./a.js | ./b.js
Run Code Online (Sandbox Code Playgroud)
例:
a.js(chmod 0755)
#!/usr/bin/env node
setTimeout(function(){
console.log(JSON.stringify({ foo: 'bar' }));
}, 10);
Run Code Online (Sandbox Code Playgroud)
b.js(chmod 0755)
#!/usr/bin/env node
console.log(process.argv);
Run Code Online (Sandbox Code Playgroud)
这是输出:
$ ./a.js | ./b.js
[ 'node', '/Users/viatropos/tests/b.js' ]
events.js:72
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:883:11)
at Object.afterWrite (net.js:700:19)
Run Code Online (Sandbox Code Playgroud)
乍一看似乎有很多问题,所以不确定从哪里开始.有没有办法让这个工作?最终目标是能够从中获取console.log输出./a.js并将其用于./b.js.原因是,大多数情况下这些脚本将一次运行一个,但有时将它们组合在一起会很好,所以理想情况下系统应该能够处理这两种情况.
在C中说,我想调用execvp()任何字符串命令.命令可以是:
char command[] = "ls -l";
char command[] = "rm *.txt";
char command[] = "cat makefile";
Run Code Online (Sandbox Code Playgroud)
我想把这个命令变量放在里面execvp().因此,exec()调味函数可以使用任何类型的任意命令运行.
我怎样才能做到这一点?谢谢.
注意:system()不允许.
我有这个脚本:
function capture(video, scaleFactor) {
if(scaleFactor == null){
scaleFactor = 1;
}
var w = video.videoWidth * scaleFactor;
var h = video.videoHeight * scaleFactor;
var canvas = document.createElement('canvas');
canvas.width = w;
canvas.height = h;
var ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, w, h);
return canvas;
}
function shoot(){
var video = document.getElementById(videoId);
var output = document.getElementById('output');
var canvas = capture(video, scaleFactor);
canvas.onclick = function(){
window.open(this.toDataURL());
};
snapshots.unshift(canvas);
output.innerHTML = '';
for(var i=0; i<1; i++){
output.appendChild(snapshots[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将快照导出到位图图像.我读到我可以使用这一行:
canvas.toDataURL('image/jpeg');
Run Code Online (Sandbox Code Playgroud)
但我不知道在哪里添加它. …
我是编写脚本的新手,我无法弄清楚如何开始使用bash脚本,该脚本将根据预期输出自动测试程序的输出.
我想编写一个bash脚本,它将在一组测试输入上运行指定的可执行文件,例如in1 in2等,对应相应的预期输出,out1,out2等,并检查它们是否匹配.要测试的文件从stdin读取其输入并将其输出写入stdout.因此,在输入文件上执行测试程序将涉及I/O重定向.
将使用单个参数调用该脚本,该参数将是要测试的可执行文件的名称.
我正在努力解决这个问题,所以任何帮助(链接到任何进一步解释我如何做到这一点的资源)将不胜感激.我显然已经尝试过自己寻找,但在这方面并不是很成功.
谢谢!
我想确定一个列表是否只包含null. null?似乎是明显的选择:
> (null? null)
#t
Run Code Online (Sandbox Code Playgroud)
但是andmap,这并不是我所期望的:
> (andmap null? '(null))
#f
Run Code Online (Sandbox Code Playgroud)
我误会了null?还是andmap?我是Racket的新手,但这根本不适合基于文档.
我正在使用dict创建一个json对象,但我对dict和json有一些问题!
def get(self):
players = db.GqlQuery("SELECT * FROM Player")
playerInfo = {}
for player in players:
email = player.email.encode("utf-8")
gem = str(player.gem)
print email
print gem
playerInfo["email"] = email
playerInfo["gem"] = gem
b = json.dumps(playerInfo)
self.response.out.write(b)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我只收到一个和for循环,当我在for循环中打印电子邮件时,我收到了6个结果,但是playerInfo的输出只有1组数据.
{"email": "test1", "gem": "0"}
Run Code Online (Sandbox Code Playgroud)
我的预期结果应该是
{"email": "test1", "gem": "0"},{"email": "test2", "gem": "2"}...
Run Code Online (Sandbox Code Playgroud) javascript ×2
bash ×1
c ×1
execvp ×1
html5-canvas ×1
html5-video ×1
linux ×1
node.js ×1
null ×1
pipe ×1
python ×1
racket ×1
scheme ×1
shell ×1
unix ×1