diff --git a/clite/libclite.js b/clite/libclite.js index 090aa11..8bc5484 100644 --- a/clite/libclite.js +++ b/clite/libclite.js @@ -86,7 +86,9 @@ return Object.create({ case ' ': if (!q && !c) { if (!wasq && s[s.length-1] == ';') { - parts.push(s.substring(0,s.length-1)); + var ss = s.substring(0,s.length-1); + if (ss.length > 0) + parts.push(ss); parts.push(';'); }else{ parts.push(s); @@ -104,7 +106,9 @@ return Object.create({ } if (s.length > 0) { if (!wasq && s[s.length-1] == ';') { - parts.push(s.substring(0,s.length-1)); + var ss = s.substring(0,s.length-1); + if (ss.length > 0) + parts.push(ss); parts.push(';'); }else{ parts.push(s); diff --git a/clite/shell.js b/clite/shell.js index 79590ea..61b36ca 100644 --- a/clite/shell.js +++ b/clite/shell.js @@ -149,6 +149,7 @@ clite.commands.load('sh',function(args,env,io) { }, internal:{ lines:[], + scrpt:null, parseFile:function(f) { var fn = clite.resolvePath(f); if (fn == null) { @@ -172,6 +173,7 @@ clite.commands.load('sh',function(args,env,io) { parser.run(); return; } + parser.internal.script = ''; parser.internal.lines = data.split('\n'); if (parser.internal.lines.length < 1) { parser.run(); @@ -182,15 +184,16 @@ clite.commands.load('sh',function(args,env,io) { parseLine:function() { var l = parser.internal.lines.shift(); if (l == null) { - parser.run(); + parser.internal.exec(); return; } - if (l[0] == '#') { - parser.internal.parseLine(); - return; - } - exec.setCommand(l); - exec.run(parser.internal.parseLine); + if (l[0] != '#') + parser.internal.script += l+'; '; + parser.internal.parseLine(); + }, + exec:function() { + exec.setCommand(parser.internal.script); + exec.run(parser.run); } }, exit:function() { @@ -617,6 +620,7 @@ clite.commands.load('sh',function(args,env,io) { fault = true; return; } + c.args[0] = c.args[0].trim(); c.path = resolvePATH(c.args[0]); }); if (fault) {