bug-bash
[Top][All Lists]
Advanced

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

Re: Questions to bash "read" builtin functionality


From: Fiedler Roman
Subject: Re: Questions to bash "read" builtin functionality
Date: Thu, 20 Dec 2012 11:21:45 +0000


> -----Ursprüngliche Nachricht-----
> Von: Chet Ramey [mailto:chet.ramey@case.edu]
> Gesendet: Mittwoch, 19. Dezember 2012 22:50
> An: Fiedler Roman
> Cc: chet.ramey@case.edu; bug-bash@gnu.org
> Betreff: Re: AW: Questions to bash "read" builtin functionality
> 
> On 12/17/12 3:34 AM, Fiedler Roman wrote:
> 
> > From your description, I would expect
> >
> > --- HYPOTHETICAL-OUTPUT---
> > # ./FragmentedSend.py | ./BashReadTest
> > Read status 142, value ""
> > Read status 142, value "Stat"      << the partial read
> > FAILED READ: "us: OK"
> > Traceback (most recent call last):
> >   File "./FragmentedSend.py", line 16, in <module>
> >     os.write(1, nextSendData[0:sendLength])
> > OSError: [Errno 32] Broken pipe
> > --- HYPOTHETICAL-OUTPUT---
> >
> > Is this consistent with what you would be expecting!
> 
> I get the following with a few runs of the above code against a freshly-
> built bash-4.2.39 (x24 is just a script that wraps the pipeline):
> 
> $ ./bash ./x24
> Read status 142, value ""
> Read status 142, value "Status:"
> Read status 142, value ""
> FAILED READ: "OK"
> Traceback (most recent call last):
>   File "./FragmentedSend.py", line 16, in <module>
>     os.write(1, nextSendData[0:sendLength])
> OSError: [Errno 32] Broken pipe
> $ ./bash ./x24
> Read status 142, value ""
> Read status 142, value "Statu"
> Read status 142, value "s:"
> FAILED READ: "OK"
> Traceback (most recent call last):
>   File "./FragmentedSend.py", line 16, in <module>
>     os.write(1, nextSendData[0:sendLength])
> OSError: [Errno 32] Broken pipe
> $ ./bash ./x24
> Read status 142, value ""
> Read status 142, value "Status: OK"
> FAILED READ: ""
> Traceback (most recent call last):
>   File "./FragmentedSend.py", line 16, in <module>
>     os.write(1, nextSendData[0:sendLength])
> OSError: [Errno 32] Broken pipe
> $ ./bash ./x24
> Read status 142, value "Sta"
> Read status 142, value "tus: O"
> FAILED READ: "K"
> Traceback (most recent call last):
>   File "./FragmentedSend.py", line 16, in <module>
>     os.write(1, nextSendData[0:sendLength])
> OSError: [Errno 32] Broken pipe
> 
> I get the same results if I run the pipeline in an interactive shell.
> This is pretty much what I expect.  The whitespace and newlines will
> disappear due to read's $IFS processing if they're first or last in
> the string.

OK, so if I understand correctly, following should be true:

Referring to my e-mail from Mo 17.12.2012 09:35, it seems that you get the 
"hypothetical output", which is correct, while the script on my side produces 
different output.

Hence the bash version from Ubuntu (GNU bash, version 4.2.24(1)-release) on my 
side behaves differently than your bash-4.2.39.

I'll try to figure out the commit, that changed the behavior and submit it in a 
bug-report to Ubuntu, perhaps they will patch.

Thanks for your help,
Roman



reply via email to

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