threads / discuss / 1912

uncommon shell code

Subject: uncommon shell code

## tl;dr

4 messages between Sep 22, 2005 and Sep 23, 2005.

replies: 3people: 2as markdown or json

Robert Watson· Sep 22, 2005, 14:32 UTC · lore
Hi,
I found the following shell code in git-tag.sh (and others):
while case "$#" in 0) break ;; esac
do
  ...
done
Why not use the straight forward code:
while test "$#" -ne 0
do
   ...
done
Are there any functional difference between them?
Robertoo
Junio C Hamano· Sep 22, 2005, 22:03 UTC · re: Robert Watson · lore

Re: uncommon shell code

Robert Watson <robert.oo.watson@gmail.com> writes:
> I found the following shell code in git-tag.sh (and others):
My fault; see point 2. in this article:
	http://marc.theaimsgroup.com/?l=git&m=112386506308820&w=2

Please either get used to it or wait until I decide to modernize the scripts wholesale, whichever comes first.

Robert Watson· Sep 23, 2005, 08:32 UTC · re: Junio C Hamano · lore

Re: uncommon shell code

On 9/22/05, Junio C Hamano <junkio@cox.net> wrote:
Show 11 quoted lines
> Robert Watson <robert.oo.watson@gmail.com> writes:
>
> > I found the following shell code in git-tag.sh (and others):
>
> My fault; see point 2. in this article:
>
>         http://marc.theaimsgroup.com/?l=git&m=112386506308820&w=2
>
> Please either get used to it or wait until I decide to modernize
> the scripts wholesale, whichever comes first.
>

I see. I thought I was old fashioned by sticking to test instead of [] (that is your point 1), but obviously I am not old enough ;)

Well, it's fine now that I know what it is. But it hurts readability, and probably it's a good idea to simplify it. Any reasonable shell should built-in test(1)?

Robertoo
Junio C Hamano· Sep 23, 2005, 09:00 UTC · re: Robert Watson · lore

Re: uncommon shell code

Robert Watson <robert.oo.watson@gmail.com> writes:
> Well, it's fine now that I know what it is.  But it hurts
> readability, and probably it's a good idea to simplify it.

I try to stay away from style discussion, but readability is always relative and personal. Things like 'while case $# in ..." is an idiom for some but not for others -- and I am included in the former group of people (unfortunately). In any case, 'while test $# != 0' is not too much of a simplification anyway.

> Any reasonable shell should built-in test(1)?

Correct. The idiom comes from performance issues -- lack of built in test long ago -- and that issue is not relevant anymore. But the pattern being an idiom for some still is.

Having said that, I do not feel too strong about enforcing _my_ style. I _do_ feel somewhat strong about consistency, so if somebody wants to update them, without dropping the ball in the middle, it is very likely that I can be persuaded to take a series of patches to modernize them.

← back to recent threads