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

Re: Bug in bash? different from ksh, at any rate...



On Sat, May 28, 2011 at 01:14:42AM -0700, Rick Thomas wrote:
> 
> Can anybody explain this difference between the behavior of bash and
> ksh?
> 
> When reading the man page, I would expect both of them to have the
> behavior exhibited by ksh.
> Why does bash seem to treat "return" like a single level "break" in
> this context?
> 
> The "echo "$AA" | while read" is important context.  If I change it
> to "for i in 0 1", return does as expected.
> 
> If it's any help, changing "return" to "break 2" doesn't help.  with
> bash, it still gives "1 1 1 1"
> while ksh still gives "1"
> 
> I wonder if it has anything to do with "while read" causing a
> subshell to be created, and bash getting confused about the "return"
> inside of a subshell.  If so, it's a bug in bash that ksh gets
> right, so it ought to be fixable.

I can't reproduce it:

$ cat strange.sh
function strange {
for j in 0 1 2 3
do
        AA=' 1
2'
        echo "$AA" | while read i
        do
                echo "$i"
                return
        done
done
}
echo $(strange)

$ bash ./strange.sh
1 1 1 1

$ ksh ./strange.sh
1 1 1 1

ii  bash      4.1-3             The GNU Bourne Again SHell
ii  mksh      39.3.20100725-1   MirBSD Korn Shell

-- 
Huella de clave primaria: AD8F BDC0 5A2C FD5F A179  60E7 F79B AB04 5299 EC56

Attachment: signature.asc
Description: Digital signature


Reply to: