On Mon, Jan 18, 2016 at 11:16:06AM -0500, Chet Ramey wrote: > On 1/18/16 8:14 AM, Greg Wooledge wrote: > > I suspect the interpretation of -d '' to mean a NUL byte delimiter > > may have been an accident originally (but that's a guess). > > I guess that depends on what you mean by `accident'.
Happy coincidence, then. > It's not a special case that needs to be documented as such. It's a > straightforward application of the rules for assigning the delimiter > and reading it. You do have to understand how C strings work and how > they are used when passing arguments to commands for it to make sense. Other shells must go out of their way to suppress it, then. wooledg@wooledg:~$ while IFS= read -r -d '' foo; do echo "<$foo>"; done < <(printf 'one\0two\0') <one> <two> wooledg@wooledg:~$ ksh $ while IFS= read -r -d '' foo; do echo "<$foo>"; done < <(printf 'one\0two\0') $ while IFS= read -r -d x foo; do echo "<$foo>"; done < <(printf 'onextwox') <one> <two>