On Sun, Nov 06, 2016 at 03:25:33PM +0100, Lars Schneider wrote: > 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