Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Jun 2012 12:06:42 -0500
From:      Tim Daneliuk <tundra@tundraware.com>
To:        FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   Re: Possible /bin/sh Bug?
Message-ID:  <4FCE3CA2.50106@tundraware.com>
In-Reply-To: <20120605163522.GD16874@dan.emsphone.com>
References:  <4FCE287D.3090501@tundraware.com> <20120605163522.GD16874@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 06/05/2012 11:35 AM, Dan Nelson wrote:
> In the last episode (Jun 05), Tim Daneliuk said:
>> Given this script:
>> #!/bin/sh
>>
>> foo=""
>> while read line
>> do
>>     foo="$foo -e"
>> done
>> echo $foo
>>
>> Say I respond 3 times, I'd expect to see:
>>
>> -e -e -e
>>
>> Instead, I get:
>>
>> -e -e
>>
>> Linux appears to do the right thing here, so this seems like it
>> is a bug ... or am I missing something?
>
> echo takes a -e flag, so it eats the first one.  Bash does the same thing,
> so any Linux that uses bash as /bin/sh will also.  You must be testing on a
> Linux that uses something else as /bin/sh.  Better to use the printf command
> if you are worried about compatibility.
>
>       echo [-e | -n] [string ...]
>               Print a space-separated list of the arguments to the standard
>               output and append a newline character.
>
>               -n      Suppress the output of the trailing newline.
>
>               -e      Process C-style backslash escape sequences.  The echo
>                       command understands the following character escapes:
>
>

Ah, OK, that makes sense, thanks...

-- 
-----------------------------------------------------------------------
Tim Daneliuk



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FCE3CA2.50106>