Greg Wooledge wrote: > On Fri, Jun 13, 2025 at 07:08:21 -0600, Stan Marsh wrote: >> BTW, and only tangentially related, "man bash" says that >> "let" and "(( ))" are exactly the same, but "shellcheck" >> thinks otherwise. "shellcheck" says you should use "(( >> ))" and never use "let", but I still (mostly) use "let". > > That's peculiar. I'm not sure why shellcheck would advise > using one of them over the other, and in particular, why > it would advise (( over let. Maybe it's because of > quoting issues with let?
There doesn't seem to be a lot of discussion about it, but
the advice to use '((' over 'let' comes from:
https://github.com/koalaman/shellcheck/issues/813
The issue is stated as:
let is very similar to (( - the only difference being
let is a builtin (simple command), and (( is a compound
command. The arguments to let are therefore subject to
all the same expansions and substitutions as any other
simple command - requiring proper quoting and escaping -
whereas the contents of (( aren't subject to
word-splitting or pathname expansion (almost never
desirable for arithmetic). For this reason, the
arithmetic compound command should generally be
preferred over let.[0]
[0] http://wiki.bash-hackers.org/commands/builtin/let
--
Todd
signature.asc
Description: PGP signature
