[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug in function return statement in while subshell

From: Roman Rakus
Subject: Re: Bug in function return statement in while subshell
Date: Tue, 30 Jul 2013 16:12:07 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4

On 07/30/2013 03:50 PM, Chet Ramey wrote:
On 7/29/13 1:15 PM, Roman Rakus wrote:
On 07/29/2013 05:06 PM, Chet Ramey wrote:
On 7/29/13 10:55 AM, Roman Rakus wrote:
I didn't take a look on where the problem could be, but it is discussed on
stackoverflow [1].

Looks like return builtin falsely exit execution of while loop instead of

What would you like to see happen?  You're in a subshell: the function
can't return, since this is not the shell that called it.  Do you want
parent and child shells both continuing execution after the function call?


As Chris said, some error, because return is not in function.

f1() {
     : | while :; do return 3; done
     echo $?
     return 1
echo $?
f1; echo $?
return 2

Looks like the bash doesn't restore the i'm-in-function indicator when
running compound command (like while or if) in functions' subshell.

I'm not sure exactly what you mean by this, since the `return' call in
the pipeline inside the function completes without an error.  Bash
prints an error message due to the `return 2' not occurring while in
a function.


My point is that the `return 3' in while loop is in subshell and will not return from the function and it can be perceived similarly to `return 2' statement. Why the `return 3' doesn't introduce an error? It is not returning from a function. It just naively knows that it is in function?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]