Re: [PATCH 1/4] t0021: use write_script to create rot13 shell script
- From
Jeff King <peff@peff.net>
- Date
- Nov 6, 2016, 14:29 UTC
- Message-ID
- <20161106142957.52wx2llanw5bis4i@sigill.intra.peff.net>
- In-Reply-To
- <22DAA280-1857-4E22-914A-1208D784DA98@gmail.com>
On Sun, Nov 06, 2016 at 03:25:33PM +0100, Lars Schneider wrote:
Show 11 quoted lines
> 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?See the section on parameter expansion in "man bash". Basically:
${foo:-bar}expands to $foo, or "bar" if it is unset or empty. Without the colon:
${foo-bar}expands to $foo, "bar" if it unset (but not if it is empty). I don't think we really care about the distinction here, and either is fine (you would not ever pass an empty argument).
So in this context you may pass in the interpreter:
write_script "$PERL_PATH" <<\EOF ... some perl code ... EOF
or it defaults to shell, which is what most of the callers want:
write_script <<\EOF ... some shell code ... EOF
-Peff