[OE-core] [PATCH] Replace "echo -e" with "printf" to have the same behavior in dash or bash

Paul Eggleton paul.eggleton at linux.intel.com
Thu Sep 20 09:13:24 UTC 2012


On Thursday 20 September 2012 11:44:39 Andrei Gherzan wrote:
> oe-core removed the prerequisite to have sh as bash. POSIX doesn't define
> any options and furthermore allows echo -e to be the default behavior.
> This means that in dash "echo -e" will actually print "-e" and interpret
> backslashes by default. We use instead "printf" builtin command with or
> without "\n" to simulate echo -e or echo -n.

I haven't looked over the whole patch, but I did notice a couple of issues - 
printf does not behave exactly like echo in a couple of situations: 

 (a) if you supply no arguments printf will return an error whereas echo does 
not, this will probably break situations where you have changed the script to 
do 'printf > /some/file'. Since these statements are usually intended to create 
or truncate the specified file, I wonder if we should just change these to do '> 
/some/file' instead which works for dash and bash (and doesn't otherwise appear 
to be a bashism).

 (b) 'printf "\n"' will print just one newline, whereas echo -e "\n" prints 
two. Not sure if this is significant but I think we would rather keep the 
behaviour the same.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre




More information about the Openembedded-core mailing list