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 $# != 0Wouldn'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