From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Subject: Re: Bug or not a bug? dot expansion in ob-shell Date: Wed, 19 Feb 2020 13:10:19 +0100 Message-ID: <874kvmsrpw.fsf@gnu.org> References: <87eeur3p1p.fsf@ucl.ac.uk> <87a75eap8k.fsf@gnu.org> <87y2sy3kkl.fsf@ucl.ac.uk> <87r1yq4xiz.fsf@gnu.org> <875zg2kcy0.fsf@ucl.ac.uk> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:51560) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4OBY-0000xv-Tz for emacs-orgmode@gnu.org; Wed, 19 Feb 2020 07:10:37 -0500 In-Reply-To: <875zg2kcy0.fsf@ucl.ac.uk> (Eric Fraga's message of "Wed, 19 Feb 2020 11:56:40 +0000") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane-mx.org@gnu.org Sender: "Emacs-orgmode" To: "Fraga, Eric" Cc: Vladimir Nikishkin , "emacs-orgmode@gnu.org" Hi Eric, note that the previous behavior only _seemed_ right by chance: there is no notion of getting the exit code of the shell command in ob-shell.el, and returning "0" is just a hazard here, just because (org-babel--string-to-number ".") returns "0", while it should return nil. "Fraga, Eric" writes: > On Wednesday, 19 Feb 2020 at 12:38, Bastien wrote: >> "0" is the _exit code_ of the successful echo command, not the value >> returned by the echo command. > > But echo does not "return" the string as a value. It outputs the > string. > > To quote the man page for bash, "the return value of a simple command is > its status". Further, a function does not actually return any value > beyond the status of the last command or a value given on a =return= > statement. Then we need to fix ob-shell.el to return the exit code of the last command when :results is not set or explicitely set to "value". Is this something you want to look at? Maybe by adding a "echo $?" instruction at the end of shell blocks or by wrapping the code into something that returns the result? I think it will come as a surprise for many users, since the natural expectation seems to get the "output", disregarding bash notion of a "return value". I don't know. > I disagree. I think the current behaviour (i.e. before your attempt to > "correct"" this) is correct given the documentation you quoted! Yes, I see how it seems correct, but this was random... >> Was it common to expect the exit code when executing shell code? > > Common? I have no idea. *I* did expect this. But that's maybe because > I do use the shell a lot. I won't release 9.4 until we properly fix this, it's important. > I think there's a clear distinction between value and output for src > blocks and blurring this distinction for shell src blocks would be > misleading. Agreed. > The option to request the output as the outcome of the src block is > already there. Yes, agreed again. If you or someone else can look at ob-shell.el and see what can be done to get the proper value (in bash's terms) of the last command in the block, that'd be great. Thanks! -- Bastien