On Fri, Mar 16, 2018 at 03:45:42PM -0400, Boruch Baum wrote: > On 2018-03-16 14:59, Greg Wooledge wrote: > > wooledg:~$ set +m > > wooledg:~$ echo hello world | readarray; declare -p MAPFILE > > declare -a MAPFILE=([0]=$'hello world\n') > > > > lastpipe will typically work in a script, because job control (set +m) > > is disabled in scripts by default. The reverse is true in an interactive > > shell. > > So that's it, then? On the command line, readarray only works with > "shopt -s lastpipe ; set +m", neither of which is set by default?
No, your construction (foo | readarray) only works with those two settings changed. A different construction (e.g. readarray < <(foo)) works just fine. > That > sounds like quite a 'gotcha' and isn't mentioned in the man page > documentation for mapfile. Do you think it should be? Should I continue > this now on-list and ask for it to be mentioned? Ultimately Chet gets to decide which common shell programming failures are worthy of being mentioned in the (already huge) manual. The man page is not meant to be a tutorial for how to write bash scripts. It's meant as a reference.