Hi Tim, thanks for your proposal. I think we agree here.
My suggestion is to have a new option ob-shell-value-is-exit-status. When set to nil (the default), the "return value" of a shell source block would be the output of the last command. This is the current behavior where we have e.g. #+begin_src shell echo "Hello!" #+end_src #+RESULTS: : Hello! When set to t, the return value of a shell source block would be the exit code of the last command. This would be useful for side effect and other use cases. We can also consider a specific parameter :value-is-exit-code to set for individual blocks--useful for noweb. My only point is I don't think ob-shell-value-is-exit-status should be t by default, as it would cause all shell blocks to return the status code by default, which may not be what most users want. Anyway, I don't have yet a clue on how to add this new option. I'll leave it to Eric first (if he has time) then look at it later this week. Thanks! -- Bastien