On 11/23/11 6:54 PM, Matthew Story wrote:
> On Nov 23, 2011, at 4:47 PM, Chet Ramey wrote:
>
>> On 11/23/11 9:03 AM, Matthew Story wrote:
>>> Bash Version: GNU bash, version 4.1.7(1)-release (amd64-portbld-freebsd8.0)
>>> OS: FreeBSD 8.0
>>> Hardware: amd64
>>> Environment: jail
>>> Description: read terminates reading all records at first null-byte (
>>> chr(0) ) in a stream, null-bytes are valid ascii characters and should not
>>> cause read to stop reading
>>> a line this behavior is not reproducible using bourne shell.
>>
>> Bash doesn't stop reading at the NUL; it reads it and the rest of the line
>> up to a newline. Since bash treats the line read as a C string, the NUL
>> terminates the value assigned to `foo'.
>
> it seems to terminate all assignment of the current line at the first `\0',
> not merely the value assigned to `foo':
Yes, sorry. That's what the "bash treats the line read as a C string"
was intended to imply. Since the line read is a C string, the NUL
terminates it and what remains is assigned to the named variables. I
should have used `line' in my explanation instead of `foo'.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU [email protected] http://cnswww.cns.cwru.edu/~chet/