From: Junio C Hamano Date: Wed, 01 Jun 2016 15:07:16 GMT Subject: Re: [PATCH] t4014: shell portability fix Message-ID: In-Reply-To: <20160601070425.GA13648@sigill.intra.peff.net> Jeff King writes: >> > eval "${1%%=*}=\${1#*=}" >> >> Is this an elaborate way to say 'eval "$1"', or is there anything >> more subtle going on? > > Notice that the value half isn't expanded until we get inside the eval. Ahh, right. > Here's the patch I wrote up earlier (but was too timid to send out after > my barrage of emails :) ). Looks very sensible. I'll drop all these "Attempt to test with ksh93 found these breakages" patches and queue this one. > -- >8 -- > Subject: test-lib: add in-shell "env" replacement > > The one-shot environment variable syntax: > > FOO=BAR some-program > > is unportable when some-program is actually a shell > function, like test_must_fail (on some shells FOO remains > set after the function returns, and on others it does not). > > We sometimes get around this by using env, like: > > test_must_fail env FOO=BAR some-program > > But that only works because test_must_fail's arguments are > themselves a command which can be run. You can't run: We can do "test_must_fail test_commit ...", but "test_must_fail env FOO=BAR test_commit ..." would not work, right? If so s/because/when/, perhaps?