Created SC2180 (markdown)

koalaman
2016-08-06 18:44:56 -07:00
parent 55a473cb7a
commit 7fb2f79c4b

32
SC2180.md Normal file

@@ -0,0 +1,32 @@
## Bash does not support multidimensional arrays. Use 1D or associative arrays.
### Problematic code:
```sh
foo[1][2]=bar
echo "${foo[1][2]}"
```
### Correct code:
In bash4, consider using associative arrays:
```sh
declare -A foo
foo[1,2]=bar
echo "${foo[1,2]}"
```
Otherwise, do your own index arithmetic:
```sh
size=10
foo[1*size+2]=bar
echo "${foo[1*size+2]}"
```
### Rationale:
Bash does not support multidimensional arrays. Rewrite it to use 1D arrays. Associative arrays map arbitrary strings to values, and are therefore useful since you can construct keys like `"1,2,3"` or `"val1;val2;val3"` to index them.
### Exceptions:
None.