childprocess.exec の出力を文字列と比較していますが、期待した結果が得られなかったため、何かを見落としていたに違いありません。
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 に文字はありますか?