mirror of
https://github.com/git/git.git
synced 2024-05-28 10:26:25 +02:00
CodingGuidelines: quote assigned value in 'local var=$val'
Dash bug https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097
lets the shell erroneously perform field splitting on the expansion
of a command substitution during declaration of a local or an extern
variable.
The explanation was stolen from ebee5580
(parallel-checkout: avoid
dash local bug in tests, 2021-06-06).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7e3a9c23d6
commit
be34b51049
|
@ -192,6 +192,18 @@ For shell scripts specifically (not exhaustive):
|
||||||
so we write "variable=value" and then "export variable" on two
|
so we write "variable=value" and then "export variable" on two
|
||||||
separate lines.
|
separate lines.
|
||||||
|
|
||||||
|
- Some versions of dash have broken variable assignment when prefixed
|
||||||
|
with "local", "export", and "readonly", in that the value to be
|
||||||
|
assigned goes through field splitting at $IFS unless quoted.
|
||||||
|
|
||||||
|
(incorrect)
|
||||||
|
local variable=$value
|
||||||
|
local variable=$(command args)
|
||||||
|
|
||||||
|
(correct)
|
||||||
|
local variable="$value"
|
||||||
|
local variable="$(command args)"
|
||||||
|
|
||||||
- Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
|
- Use octal escape sequences (e.g. "\302\242"), not hexadecimal (e.g.
|
||||||
"\xc2\xa2") in printf format strings, since hexadecimal escape
|
"\xc2\xa2") in printf format strings, since hexadecimal escape
|
||||||
sequences are not portable.
|
sequences are not portable.
|
||||||
|
|
Loading…
Reference in New Issue