Hi Eric 2011/8/20 Eric Schulte <schulte.e...@gmail.com>: > [...] I would lean towards thinking > that passing along error messages is more important than returning error > codes, but if the community thinks differently I'm happy to change the > ob-sh behavior.
A non-zero exit status and stderr of a process are not necessarily related. Because a process may also use - a non-zero exit status without error situation (e. g. grep, diff) - stderr for output not related with errors - stdout for error messages I would like very much to be able to collect all available feedback from a process at the same run. Even with an optional indication of the origin, for ambiguity like the "hello" below or just for clarification. > Unfortunately it seems that in either case the sh code blocks will need > to be different than other languages either in its handling of errors or > of return values. This is unavoidable due to the overloading of return > values in the shell as error indicators. If the shell is a special case for babel anyway, why not something like the following? #+begin_src sh :exports stdout stderr exit_status -v echo hello echo hello >&2 false #+end_src #+results: : 2: hello : 1: hello : exit status: 1 This would have been - with an option -v for verbosity to prefix stdout with "1: ", stderr with "2: " and the exit status - with the exit status of the last command without the need of an extra "echo $?". My habit as a background info: To learn more from the shell I use - a shell prompt with the exit status of the last command - when I sometimes want to visually divide stdout and stderr (bash): { { echo hello; echo hello >&2; } 3>&1 1>&2 2>&3 | sed 's/^/2: /'; } \ 3>&1 1>&2 2>&3 | sed 's/^/1: /'; 3>&- to output: 2: hello 1: hello Michael