Re: [PATCH] Supplant the "while case ... break ;; esac" idiom
On Mon, Sep 24, 2007 at 08:01:34AM +0000, Pierre Habouzit wrote:
Show 26 quoted lines
> On Mon, Sep 24, 2007 at 07:57:31AM +0000, David Kastrup wrote:
> > "David Symonds" <dsymonds@gmail.com> writes:
> >
> > > On 24/09/2007, David Kastrup <dak@gnu.org> wrote:
> > >> Mike Hommey <mh@glandium.org> writes:
> > >>
> > >> > On Sun, Sep 23, 2007 at 10:42:08PM +0200, David Kastrup wrote:
> > >> >> -while case $# in 0) break ;; esac
> > >> >> +while test $# != 0
> > >> >
> > >> > Wouldn't -ne be better ?
> > >>
> > >> Why?
> > >
> > > Because -ne does a numeric comparison, != does a string comparison,
> > > and it's a numeric comparison happening, semantically speaking.
> >
> > I don't see the point in converting $# and 0 into numbers before
> > comparing them. "!=" is quite more readable, and the old code also
> > compared the strings.
>
> Fwiw $# already is a number. Hence test $# -ne 0 is definitely a
> better test.
>
> $# != 0 would yield sth like (strcmp(sprintf("%d", argc), "0"))
> $# -ne 0 would yield sth like (argc != atoi("0")). Of course this holds only for shell where test/[ is a builtin, which
is the at least the case for zsh, bash, and dash (but not posh).
--
·O· Pierre Habouzit
··O madcoder@debian.org
OOO http://www.madism.org