I wonder if I can write nested execline scripts. For example: I have a chaining program like `s6-tcpclient`:
``` #!execline s6-tcpclient example.com 80 sh -c 'echo -en "GET / HTTP/1.0\nHost: example.com\n\n" 1>&7; cat <&6' ``` which I can run inside my execline script, obviously. What I can also do is: ``` #!execline define url example.com s6-tcpclient $url 80 execlineb " foreground { fdmove 1 7 echo -en \"…\" fdmove 0 6 cat } " ``` which uses an execline script as `prog` for `s6-tcpclient`. Note the escaping I have to add to the echo string. What I’m wondering is: since I am already inside the `execlineb` script reader, why should I have to call it recursively? I played with `runblock` a bit, since it seemed the most promising, but couldn’t bring it do do something except throwing a “usage” or “wrong number of arguments” error. My idea is to have kind of “magic token” that causes the `execline` parser to see rest of the file as an execline script, stopping the tokenizer: ``` #!execline define url example.com s6-tcpclient $url 80 execline foreground { fdmove 1 7 echo -en "…" fdmove 0 6 cat } ``` Which would be parsed to the standard: ``` define url example.com s6-tcpclient '$url' 80 execlineb -l foreground { fdmove 1 7 echo -en "…" } fdmove 0 6 cat ``` (newline for clarity) The `-l` (for “line”, maybe `-v` for “verbatim”) instructs `execlineb` to take the rest of its arguments as execline script (no `args`). Execline can be used multiple times, since `execlineb` would stop parsing at the first `execline` it encounters: ``` execline execline echo foo => execlineb -l execline echo foo => execlineb -l echo foo => echo foo ``` Actually, stopping the parse at the first encounted `execline` is a lie, since blocks have to be handled correctly: ``` foreground { execline echo foo } echo bar => foreground " execlineb" " -l" " echo" " foo" "" echo bar ``` If I think about it, maybe there doesn’t have to be any standard token, and just adding `-l` to `execlineb` gives us all needed functionality already. Profpatsch -- Written with Emacs (mu4e) on NixOS. Q: Why is this email five sentences or less? A: http://five.sentenc.es/ May take up to five days to read your message. If it’s urgent, call me.