Re: [PATCH] Allow shell scripts to run with non-Bash /bin/sh
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 22, 2007, 02:33 UTC
- Message-ID
- <7vlkazh1ji.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20070921214346.GF97288@void.codelabs.ru>
Eygene Ryabinkin <rea-git@codelabs.ru> writes:
> Good day. > > I had found that FreeBSD's /bin/sh refuses to work with git 1.5.3.2. > correctly: no flags are recognized.
Show 7 quoted lines
> @@ -109,7 +109,7 @@ dotest=.dotest sign= utf8=t keep= skip= interactive= resolved= binary= > resolvemsg= resume= > git_apply_opt= > > -while case "$#" in 0) break;; esac > +while case "$#" in 0) break;; *) : ;; esac > do
I am assuming that this works around _a_ bug in that /bin/sh; I would make sure I understand the nature of the bug. Is it Ok to understand that with that shell, after this construct runs:
case <some word> in
<case arm #1>)
something ;;
<case arm #2>)
something else ;;
esacthe status from the whole case statement is false, when <some word> does not match any of the glob patterns listed in any of the case arm?
That is, what does the shell say if you do this?
case Ultra in
Super)
false ;;
Hyper)
true ;;
esac &&
echo case returned okThe reason I ask is because
while case $# in 0) ... esac
do
...
doneis not the only place the status from "case" itself matters in our scripts. There are places that do
something &&
case ... in
...
esac &&
something elseand we would need to add no-op match-everything arm to all of such case statements in our scripts.
Besides test scripts, there is one in git-ls-remote.sh which you seem to have missed.