if(stdout ==“E”)总是返回false

时间:2013-08-02 11:37:45

标签: javascript node.js bash

我将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中是否有某些字符?

1 个答案:

答案 0 :(得分:1)

NodeJS有“fs”模块,可以为您解决这个问题。文档位于http://nodejs.org/api/fs.html

你可以这样做:

fs.exists(list[i], function (exists) {
  console.log("exists = ", exists);
});