diff --git a/clite/core.js b/clite/core.js index c4bae7e..8b08d2f 100644 --- a/clite/core.js +++ b/clite/core.js @@ -1063,7 +1063,26 @@ clite.shell = { } pptxt += p; }); - // TODO: look for command substitutions + txt = pptxt; + parts = txt.split('`'); + pptxt = ''; + if (parts.length == 1) + return txt; + parts.forEach(function(p,i) { + if (i > 0) { + var b = p; + var e = ''; + var pi = b.indexOf('`'); + if (pi > 0) { + e = b.substring(pi); + b = b.substring(0,pi); + } + // TODO: replace b with the output of the command in b (command substitution) + pptxt = b+e; + return; + } + pptxt += p; + }); return pptxt; }, run:function(txt) { @@ -1339,6 +1358,7 @@ clite.lib = { // convert a string into an argument array: 'ls /etc' -> ['ls','/etc'] strToArgs:function(txt) { var parts = []; + var sp = ''; var s = ''; var e = false; var q = false; @@ -1352,11 +1372,14 @@ clite.lib = { } break; case '"': + case '`': if (!e) { if (!q) { + sp = txt[i]; q = true; break; - }else{ + }else if (txt[i] == sp) { + sp = ''; q = false; } }else{ @@ -1368,8 +1391,8 @@ clite.lib = { s = ''; e = false; q = false; + break; } - break; default: s+=txt[i]; e = false;