mirror of
https://codeberg.org/TicklishHoneyBee/CLIte.git
synced 2026-03-11 09:04:37 +00:00
setup for command substitution in shell
This commit is contained in:
parent
71d513a65e
commit
5246630d6f
1 changed files with 26 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue