From: Lars Schneider Date: Sun, 06 Nov 2016 14:25:33 GMT Subject: Re: [PATCH 1/4] t0021: use write_script to create rot13 shell script Message-ID: <22DAA280-1857-4E22-914A-1208D784DA98@gmail.com> In-Reply-To: <20161102181751.trxsns5pxqk73ukc@sigill.intra.peff.net> > On 02 Nov 2016, at 19:17, Jeff King wrote: > > This avoids us fooling around with $SHELL_PATH and the > executable bit ourselves. > > Signed-off-by: Jeff King > --- > t/t0021-conversion.sh | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh > index a20b9f58e..dfde22549 100755 > --- a/t/t0021-conversion.sh > +++ b/t/t0021-conversion.sh > @@ -6,13 +6,11 @@ test_description='blob conversion via gitattributes' > > TEST_ROOT="$(pwd)" > > -cat <"$TEST_ROOT/rot13.sh" > -#!$SHELL_PATH > +write_script <<\EOF "$TEST_ROOT/rot13.sh" > tr \ > 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' \ > 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM' > EOF > -chmod +x "$TEST_ROOT/rot13.sh" > > generate_random_characters () { > LEN=$1 > -- > 2.11.0.rc0.258.gf434c15 > This looks good to me (and it works on my machine). However, I took a look at the "write_script" function and found this, added by Junio in 840c519d: echo "#!${2-"$SHELL_PATH"}" && There is some kind of variable expansion happening with the "2-" but I can't quite figure out what is going on. Plus, I can't find anything about this in the sh docs. Can anyone help me to understand it? Thanks, Lars