1
0
Fork 0
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:
Junio C Hamano 2024-04-05 17:08:58 -07:00
parent 7e3a9c23d6
commit be34b51049

View File

@ -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.