From: Junio C Hamano Date: Fri, 10 Oct 2014 21:16:43 GMT Subject: Re: [PATCH v2] mergetool: use more conservative temporary filenames Message-ID: In-Reply-To: <5437C0CC.7030102@gmail.com> Jakub Narębski writes: > Why use expr and not POSIX shell parameter substitution? > > BASE=${MERGED%.*} > ext=.${MERGED##*.} > > Or something like that... Because they are insufficient. See David's illustrations for how. Parameter expansion (e.g. ${parameter%word}) is fine for the simplest cases (e.g. you know there is .c suffix to the $string and want to strip it out) but not sufficient for other cases (e.g. you may not even know if there is any suffix). You can deconstruct your regexps manually and use conditional if/else/fi if you are unable to use expr, but I do not see how it buys us anything.