On 16/11/2010, at 6:08 AM, Stefan Berger wrote:
<snip>
> Ah - the plot thickens, and the light bulb goes on for me.
It's not
> just a problem with read, but also with your use of 'echo' to try and
> replay a just-read string. 'echo' and '\' don't mix. You have
to use
> printf for any chance of portability.
>
> printf %s\\n "\1"
> printf %s\\n '\1'
I am surprised that dash doesn't take the opportunity to already extend
"\1" or '\1' to char(1) in these cases. A mystery... :-)
I'll fix it. Thanks.
We seem to have recurring problems with finding portable commands, that work across
everything.
Would use an alternative approach, such as having our own wrapper functions, be more
reliable?
(conceptually like this)
function replace_stuff()
{
if "$SHELL" = "dash"
dash specific sed here
elsif "$SHELL = bash"
bash specific sed here
else
sh fallback sed here
fi
}
# main code
replace_stuff ("foo" "bar")
?