Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[DEVEL] Unnecessary use of $ / ${} with arithmetic variable SH-2004 critical anti-pattern #14512

Open
philipjonsen opened this issue Sep 20, 2024 · 0 comments

Comments

@philipjonsen
Copy link

Description

escription
Use of $ or ${..} on regular variables in arithmetic context is unnecessary, and can even lead to subtle bugs. This is because the content of $((..)) is first expanded into a string, and then evaluated as an expression:

$ a='1+1'
$ echo $(($a * 5))    # becomes 1+1*5
6
$ echo $((a * 5))     # evaluates as (1+1)*5
10
The $ is unavoidable for special variables like $1 vs 1, $# vs #. It is also required when adding modifiers to parameters expansions, like ${#var} or ${var%-}.

Problematic code:
echo $(($n + ${arr[i]}))
Preferred code:
echo $((n + arr[i]))

$/${} is unnecessary on arithmetic variables found here:

https://github.com/philipjonsen/chainlink/blob/develop/tools/benchmark/job_spec_delete_v2.sh#L143-L143

$/${} is unnecessary on arithmetic variables found here:

https://github.com/philipjonsen/chainlink/blob/develop/tools/benchmark/job_spec_delete_v2.sh#L134-L134

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant