Created SC2324 (markdown)

Vidar Holen
2023-07-30 16:06:16 -07:00
parent 9f3cd894e1
commit 3685488d3d

49
SC2324.md Normal file

@@ -0,0 +1,49 @@
## var+=1 will append, not increment. Use (( var += 1 )), declare -i var, or quote number to silence.
### Problematic code:
```sh
var=2 n=3
var+=$n
```
### Correct code:
In bash/ksh, use an `(( arithmetic context ))`
```sh
(( var += n ))
```
or declare the variable as an integer type:
```sh
declare -i var=2
n=4
var+=$n
```
For POSIX sh, use an `$((arithmetic expansion))`:
```sh
var=$((var+n))
```
### Rationale:
The problematic code attempts to add 2 and 3 to get 5.
Instead, `+=` on a string variable will concatenate, so the result is 23.
### Exceptions:
If you *do* want to concatenate a number, for example to append trailing zeroes, you can silence the warning by quoting the number:
```sh
var+="000"
```
### Related resources:
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!