Eric Blake <eblake@xxxxxxxxxx> wrote: > > --- code > > prefix() { sed -e "s/^/$1:/"; } > > DASH_CODE() { :; } > > > > prefix A <<XXX && echo "$(prefix B <<XXX > > echo line 1 > > XXX > > echo line 2)" && prefix DASH_CODE <<DASH_CODE > > echo line 3 > > XXX > > echo line 4)" > > echo line 5 > > DASH_CODE > > > > --- bash 4.3.42 output: > > A:echo line 3 > > B:echo line 1 > > line 2 > > DASH_CODE:echo line 4)" > > DASH_CODE:echo line 5 > > So, it looks like bash is interpreting this as "first newline that is > not in the middle of another shell word), and parses the entire $(...) I would like to get an explanation on what I should understand by: "first newline that is not in the middle of another shell word) BTW: If I replace $(..) by `..` and feed the code to the original SVr4 Bourne Shell, I get the same output as you got from bash. I would guess that the bash output you added above is correct. Note that the command substitution is part of a " quoted string and even without that, it would need to be parsed first. The POSIX version from ksh88 (seen on Solaris) behaves the same with $(..) and the `..` variant and the same as bash. The fact that ksh93 behaves different with $(..) and the `..` variant makes it obvious that ksh93 has a bug. Jörg -- EMail:joerg@xxxxxxxxxx (home) Jörg Schilling D-13353 Berlin joerg.schilling@xxxxxxxxxxxxxxxxxxx (work) Blog: http://schily.blogspot.com/ URL: http://cdrecord.org/private/ http://sourceforge.net/projects/schilytools/files/' -- To unsubscribe from this list: send the line "unsubscribe dash" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html