Le 02/10/2021 à 18:45, Greg Wooledge écrivait :
On Sat, Oct 02, 2021 at 06:06:32PM +0200, Léa Gris wrote:
Better illustrated how newlines are discarded:
$ sudo bash -c 'echo hello
echo world'
hello
world
$ sudo -i bash -c 'echo hello
echo world'
helloecho world
OK, that's news to me. But that looks like a bug in sudo. Asking bash
to change its behavior to work around a bug in some other program seems
like misdirected effort.
It is not wholly misdirected since Bash already add semicolon after
statements where it is optional since these are followed by newlines.
Adding a semicolon after the last statement of a command group would not
hurt in any circumstance.
Now while reworking the output of declare -f, there could be an option
to produce the most compact output without newlines and without
indentation; for the purpose of serializing function declarations,
similarly as declare -p already serialize variables declaration in a
compact one-line even for arrays.
Corollary declare -p could have an indented expanded output that would
be useful for arrays with an element per line rather than space
delimited elements.
These changes to the serialization of declare -f and -p would not affect
backward or forward compatibility between serialization types. It would
make the declare -f more resilient to newline removal and would allow
both compact and indented verbose formatted outputs to coexist.