git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 3/5] Replace $((...)) with expr invocations.
Date: Tue, 06 Nov 2007 13:06:00 -0800	[thread overview]
Message-ID: <7vtznzf5jb.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20071106202600.GH6361@ins.uni-bonn.de> (Ralf Wildenhues's message of "Tue, 6 Nov 2007 21:26:00 +0100")

Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:

> * Ralf Wildenhues wrote on Tue, Nov 06, 2007 at 09:18:09PM CET:
>> ---
>>  git-filter-branch.sh       |    4 ++--
>>  git-rebase--interactive.sh |    8 ++++----
>>  git-rebase.sh              |    8 ++++----
>>  3 files changed, 10 insertions(+), 10 deletions(-)
>
> Hmm, maybe this one is overkill.  $((...)) is POSIX, I temporarily
> forgot (thanks Benoît!).
>
> I'm unsure whether git targets non-POSIX Bourne shells like Solaris
> /bin/sh.  That would however mean replacing stuff like $(cmd) with
> `cmd` as well, and from grepping the source it looks like you'd rather
> avoid that.

For git, two rough rules are:

 - Most importantly, we never say "It's in POSIX; we'll happily
   screw your system that does not conform."  We live in the
   real world.

 - However, we often say "Let's stay away from that construct,
   it's not even in POSIX".

For shell scripts specifically (not exhaustive):

 - We prefer $( ... ) for command substitution; unlike ``, it
   properly nests.  It should have been the way Bourne spelled
   it from day one, but unfortunately isn't.

 - We use ${parameter-word} and its [-=?+] siblings, and their
   colon'ed "unset or null" form.

 - We use ${parameter#word} and its [#%] siblings, and their
   doubled "longest matching" form.

 - We use Arithmetic Expansion $(( ... )).

 - No "Substring Expansion" ${parameter:offset:length}.

 - No shell arrays.

 - No strlen ${#parameter}.

 - No regexp ${parameter/pattern/string}.

 - We do not use Process Substitution <(list) or >(list).

 - We prefer "test" over "[ ... ]".

 - We do not write noiseword "function" in front of shell
   functions.

  reply	other threads:[~2007-11-06 21:06 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-06 20:15 [PATCH 0/5] some shell portability fixes Ralf Wildenhues
2007-11-06 20:17 ` [PATCH 1/5] Avoid a few unportable, needlessly nested "...`..." Ralf Wildenhues
2007-11-06 20:17 ` [PATCH 2/5] Fix sed script to work with AIX sed Ralf Wildenhues
2007-11-06 20:18 ` [PATCH 3/5] Replace $((...)) with expr invocations Ralf Wildenhues
2007-11-06 20:26   ` Ralf Wildenhues
2007-11-06 21:06     ` Junio C Hamano [this message]
2007-11-06 23:17       ` [PATCH] Add Documentation/CodingStyle Johannes Schindelin
2007-11-07  0:04         ` Andreas Ericsson
2007-11-07  0:40         ` Junio C Hamano
2007-11-07  8:52           ` Andreas Ericsson
2007-11-07 14:59             ` [PATCH v2] " Johannes Schindelin
2007-11-07 21:43               ` Robin Rosenberg
2007-11-07 22:35                 ` [PATCH v3] Add Documentation/CodingGuidelines Johannes Schindelin
2007-11-07 23:14                   ` Junio C Hamano
2007-11-08  0:33                     ` [PATCH v4] " Johannes Schindelin
2007-11-08  0:38                       ` Junio C Hamano
2007-11-07 14:54           ` [PATCH] Add Documentation/CodingStyle Johannes Schindelin
2007-11-07  7:53         ` Wincent Colaiuta
2007-11-07  8:53           ` Andreas Ericsson
2007-11-07 19:40         ` Jon Loeliger
2007-11-07 20:13           ` Johannes Schindelin
2007-11-08 11:29         ` Mike Ralphson
2007-11-06 20:20 ` [PATCH 4/5] Fix sed string regex escaping in module_name Ralf Wildenhues
2007-11-06 20:20 ` [PATCH 5/5] Avoid "test -o" and "test -a" which are not POSIX, only XSI Ralf Wildenhues
2007-11-06 20:46 ` [PATCH 0/5] some shell portability fixes Junio C Hamano
2007-11-06 21:02   ` Mike Hommey
2007-11-06 23:25     ` Johannes Schindelin
2007-11-07 14:17       ` Mike Ralphson
2007-11-07 14:47         ` Johannes Schindelin
2007-11-07 15:30           ` Mike Ralphson
2007-11-07 15:37             ` Johannes Schindelin
2007-11-06 21:09   ` Ralf Wildenhues
2007-11-07 15:58   ` Nguyen Thai Ngoc Duy
2007-11-07 16:05     ` Nguyen Thai Ngoc Duy
2007-11-07 20:42       ` Junio C Hamano
2007-11-08  6:14         ` Ralf Wildenhues
2007-11-12 11:20         ` Nguyen Thai Ngoc Duy
2007-11-10 22:30   ` Miles Bader

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vtznzf5jb.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Ralf.Wildenhues@gmx.de \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).