Thread (8 messages) flat view 8 messages, 4 authors, 2016-06-15

Re: [PATCH] Supplant the "while case ... break ;; esac" idiom

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:36

Hi,

On Mon, 24 Sep 2007, Pierre Habouzit wrote:
On Mon, Sep 24, 2007 at 08:01:34AM +0000, Pierre Habouzit wrote:
quoted
On Mon, Sep 24, 2007 at 07:57:31AM +0000, David Kastrup wrote:
quoted
"David Symonds" [off-list ref] writes:
quoted
On 24/09/2007, David Kastrup [off-list ref] wrote:
quoted
Mike Hommey [off-list ref] writes:
quoted
On Sun, Sep 23, 2007 at 10:42:08PM +0200, David Kastrup wrote:
quoted
-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).
The reason we used "case" is that this has always been a builtin (has to 
be, because it changes workflow).

Therefore I am somewhat uneasy that the patch went in so easily, 
especially given a message that flies in the face of our endeavours to 
make git less dependent on any given shell (as long as it is not broken to 
begin with).

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help