iPXE discussion forum

Full Version: Using "||" as a string literal?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Is there a way to put a string containing "||" into a variable, and then using said variable in a kernel command?

This doesn't work - I can see in /proc/cmdline that the ocs_postrun is cut off at the double-pipe, while cmd_netdev is still included (so I shouldn't be hitting some limit, AFAICT)
Code:
...
set cmd_postrun       ocs_postrun=" (cat error.log || echo success) | nc -l -p 4444"
...
kernel ${clonezilla-url} ${cmd_common} ${cmd_postrun} ${cmd_netdev}

EDIT: It turns out bash doesn't mind if its own double-pipe isn't surrounded with spaces, so I'll probably resolve my issue by removing them. Still, it would be nice to know if the literal usage is somehow possible.
(2018-04-05 13:23)myxal Wrote: [ -> ]Is there a way to put a string containing "||" into a variable, and then using said variable in a kernel command?

Yes. There's no general purpose character escaping mechanism (e.g. a backslash) in iPXE, but you can hack around it using e.g.

Code:
set pipe |
set pipes ${pipe}${pipe}

and then use "${pipes}" in place of "||".

Michael
Reference URL's