我将childprocess.exec的输出与tring进行比较,但我必须忽略一些事情,因为我没有得到预期的结果。
function download_all(list, callback){
var i=0, cmd="";
function afterDownload(){...}
while(i<list.length)
{
cmd="[ -f ./downloads/"+list[i]+" ] && echo \"E\" || echo\""+list[i]+"\"";
exec(cmd, function(error, stdout, stderr){
if(stdout=="E")
{
console.log("Already Exist");
}else{
console.log("download "+LINK+""+stdout);
download(LINK+stdout, afterDownload());
}
});
i=i+1;
}
基本上,我检查文件是否存在,查看命令的输出,如果不是E(对文件存在签名),请下载它。 问题是,即使文件存在,应用程序也会尝试下载LINK + E,但它不存在,当然也会失败。
我尝试使用===代替==,而不是',而不是改变任何东西。
除了E之外,stdout中是否有某些字符?
答案 0 :(得分:1)
NodeJS有“fs”模块,可以为您解决这个问题。文档位于http://nodejs.org/api/fs.html
你可以这样做:
fs.exists(list[i], function (exists) {
console.log("exists = ", exists);
});