On Wed, Jun 22, 2016 at 11:41 AM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > On Wed, Jun 22, 2016 at 8:36 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: >> On Wed, Jun 22, 2016 at 11:29 AM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: >>> >>> Can any shell wizards explain this to me? With this code >>> >>> BS=\\ >>> echo ${BS}${BS} >>> >>> Debian's dash returns a single backslash while bash returns two >>> backslashes. Section 2.2.1 [1] does not say anything about one >>> backslash (hidden behind a variable!) after escaping the following one >>> and still eats the one after that.. >>> >>> [1] http://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html >> >> I am not a wizard, but is the difference between the shell syntax, or just their >> implementation of builtin-echo? IOW, how do these three compare? >> >> printf "%s\n" "${BS}${BS}" >> echo "${BS}${BS}" >> echo ${BS}$BS} > > Great! printf shows two backslashes while both echo'es show one. > printf "\\\\" behaves like echo though. Doesn't matter, at least I > should be able to make the tests work on Debian dash. I think somebody's implementation of "echo" is not POSIX kosher. According to http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html you should expect a single backslash. If a script depends on seeing two, the script is buggy. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html