On Fri, Jun 20, 2014 at 12:00:02AM +0200, Tim Friske wrote: > While searching for an alternative I came up with the following code > which does not work when I have the "shopt -os errexit" command line > at the top of my script: > > read -d '' -r foobar <<BARFOO > bla bla > BARFOO
read returns "failure" because it reaches end of file without encountering the delimiter character (0x00). This is why you don't use set -e (or errexit, or trap ERR, or any of the other syntaxes by which this misfeature is invoked). For more fun details, see http://mywiki.wooledge.org/BashFAQ/105 You may be amazed at how incredibly broken set -e actually is. Bourne shell and C were developed at a time when it was NOT the standard practice for programming languages to handle exceptions/errors for you. You need to check the results of each operation yourself.