Skip to content

Commit

Permalink
CodingGuidelines: reword parameter expansion section
Browse files Browse the repository at this point in the history
Group entries related to parameter substitutions together and avoid
using the word "regexp" to refer to the ${parameter/pattern/string}
substitution (banned), as the pattern there is a shell glob and not
a regular expression.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Oct 13, 2010
1 parent 537497b commit bc97994
Showing 1 changed file with 15 additions and 12 deletions.
27 changes: 15 additions & 12 deletions Documentation/CodingGuidelines
Original file line number Diff line number Diff line change
Expand Up @@ -35,25 +35,28 @@ For shell scripts specifically (not exhaustive):
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 POSIX compliant parameter substitutions and avoid bashisms;
namely:

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

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

- Inside Arithmetic Expansion, spell shell variables with $ in front
of them, as some shells do not grok $((x)) while accepting $(($x))
just fine (e.g. dash older than 0.5.4).
- No "Substring Expansion" ${parameter:offset:length}.

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

- No shell arrays.
- No strlen ${#parameter}.

- No strlen ${#parameter}.
- No pattern replacement ${parameter/pattern/string}.

- No regexp ${parameter/pattern/string}.
- We use Arithmetic Expansion $(( ... )).

- Inside Arithmetic Expansion, spell shell variables with $ in front
of them, as some shells do not grok $((x)) while accepting $(($x))
just fine (e.g. dash older than 0.5.4).

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

Expand Down

0 comments on commit bc97994

Please sign in to comment.