Chris Ridd schrieb: > Johannes Sixt wrote: >> Chris Ridd schrieb: >>> @@ -73,7 +73,7 @@ resolve_relative_url () >>> module_name() >>> { >>> # Do we have "submodule.<something>.path = $1" defined in >>> .gitmodules file? >>> - re=$(printf '%s' "$1" | sed -e 's/[].[^$\\*]/\\&/g') >>> + re=$(printf "%s\n" "$1" | sed -e 's/[].[^$\\*]/\\&/g') >> >> You change sq into dq. Is this not dangerous? Shouldn't backslash-en be >> hidden from the shell so that printf can interpret it? > > It is necessary to use double quotes. This: > > printf '%s\n' foobar > > prints a literal \, a literal n, and no newline: > > foobar\n > > Not desirable :-( On both Linux and AIX 4.3 I see: $ printf 'x\ny'; echo z x yz The printf turns the \n into LF. I mentioned this in the first place because I don't know what various shells do with \n when they see "%s\n". But one way or the other, the \n will be turned into LF, either by the shell or by printf. So it's not a big deal. > Of course, using a plain old: > > echo "$1" > > should work well too. Why is printf being used here and not echo, anyway? Because the "$1" could contain character sequences that some 'echo' implementations mangle. -- Hannes -- 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