setup for command substitution in shell

This commit is contained in:
Lisa Milne 2023-11-11 18:00:50 +10:00
parent 71d513a65e
commit 5246630d6f

View file

@ -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;