[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: read builtin does not return success code (0) in spite of it success
From: |
Eric Blake |
Subject: |
Re: read builtin does not return success code (0) in spite of it successfully read line |
Date: |
Mon, 27 Dec 2010 11:53:09 -0700 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Lightning/1.0b3pre Mnenhy/0.8.3 Thunderbird/3.1.7 |
On 12/27/2010 10:59 AM, Stephane CHAZELAS wrote:
> 2010-12-27, 09:43(-07), Eric Blake:
> [...]
>> On 12/26/2010 01:29 PM, Stephane CHAZELAS wrote:
>>> Bash behavior is the same as every other shell, is as documented
>>> and as specified by POSIX.
>>
>> POSIX requires that the input to read be a text file. Since you aren't
>> passing a text file, the behavior is undefined. POSIX does NOT require
>> bash to return failure in this case, but neither does it require bash to
>> return success. You should not rely on the behavior of read when the
>> input does not end in a newline.
> [...]
>
> From
> http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html
>
> SUSv4> EXIT STATUS
> SUSv4>
> SUSv4> The following exit values shall be returned:
> SUSv4>
> SUSv4> 0
> SUSv4> Successful completion.
> SUSv4> >0
> SUSv4> End-of-file was detected or an error occurred.
> SUSv4>
Also from the standard:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html
STDIN
The standard input shall be a text file.
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html
1.4 Utility Description Defaults
When an input file is described as a "text file", the utility produces
undefined results if given input that is not from a text file, unless
otherwise stated.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html
3.395 Text File
A file that contains characters organized into zero or more lines. The
lines do not contain NUL characters and none can exceed {LINE_MAX} bytes
in length, including the <newline> character.
>
> So I think you can expect a non-zero status here.
All you can expect is that you have undefined results. Undefined
results include zero status.
--
Eric Blake eblake@redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature