Re: [PATCH] t0300-credentials: Word around a solaris /bin/sh bug
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 3, 2012, 21:50 UTC
- Message-ID
- <7vr4ybmvrq.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20120203212604.GA1890@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 15 quoted lines
>> without requiring the brain-cycle to waste on the "Is this simple enough
>> for even Solaris to grok?" guess game. This should also be reusable for
>> other stuff like $PERL_PATH, I would think.
>
> I like it. Even better would be:
>
> write_script() {
> echo "#!$2" >"$1" &&
> cat >>"$1" &&
> chmod +x "$1"
> }
>
> write_script foo.sh "$SHELL_PATH" <<-\EOF
> echo my arguments are "$@"
> EOFI first thought that the order of parameters were unusual, but with that order, you could even go something fancier like:
write_script () {
case "$#" in
1) case "$1" in
*.perl | *.pl) echo "#!$PERL_PATH" ;;
*) echo "#!$SHELL_PATH" ;;
esac
2) echo "#!$2" ;;
*) BUG ;;
esac >"$1" &&
cat >>"$1" &&
chmod +x "$1"
} write_script foo.sh
write_script bar.perl
write_script pre-receive /no/frobnication/todayThe tongue-in-cheek comment aside, I think ${2-"$SHELL_PATH"} or some form of fallback would be a good idea in any case, as 99% of the time what we write in the test scripts is a shell script.
Also "chmod +x" is a very good idea.