BASH: 将数字添加到数组的元素

BASH: Adding numbers to an element of array

我正在学习 shall 脚本,我想知道是否有任何方法可以将数字添加到数组的元素,以便将数字添加到元素而不是追加它。

num=1
declare -A array
array[0]+=$num
array[0]+=$num
echo ${array[0]}

显然,结果将是“11”而不是 2。我知道这个问题可能存在于社区中,但我找不到它可能是因为我不知道如何命名问题。

你可以使用算术上下文 ((..)):

num=1
declare -A array
((array[0]+=$num))
((array[0]+=$num))
echo ${array[0]}

2

给数组 integer attribute 启用“裸”算术:

num=1
declare -Ai array
array[0]+=$num         
array[0]+=num        # also works without expanding the variable
                     # because this is arithmetic evaluation
declare -p array

产出

declare -Ai array=([0]="2" )

-A 定义了一个 associative 数组。 -i 也适用于 -a numerically-indexed 数组。