From: Junio C Hamano Date: Tue, 06 Sep 2011 20:01:29 GMT Subject: Re: [PATCH] Makefile: abort on shells that do not support ${parameter%word} expansion Message-ID: <7v62l58mp2.fsf@alter.siamese.dyndns.org> In-Reply-To: Brandon Casey writes: > From: Brandon Casey > > Add an entry to the please_set_SHELL_PATH_to_a_more_modern_shell target > which tests whether the shell supports ${parameter%word} expansion. I > assume this one test is enough to indicate whether the shell supports the > entire family of prefix and suffix removal syntax: > > ${parameter%word} > ${parameter%%word} > ${parameter#word} > ${parameter##word} > > FreeBSD, for one, has a /bin/sh that, apparently, supports $() notation but > not the above prefix/suffix removal notation. My reading of the later part of the thread you are basing the above is somewhat different from your diagnosis. The funny seems to happen only when there is a backslash-quoted glob special inside double-quotes (e.g. "${parameter%\?*}") and the same shell does not seem to be choking on many prefix/suffix expansion used in other test scripts.