Arrays 如何在Bash中增加关联数组

Arrays 如何在Bash中增加关联数组,arrays,bash,Arrays,Bash,我有一个关联数组: lettres['A']=0 …(from 'A' to 'Z')… lettres['Z']=0 我的问题很简单:如何获取一个元素的值并增加它?我尝试了以下方法: lettres[$char]=${lettres[$char]}++ 但它失败了,因为结果是«0++++»。如何轻松地增加值 编辑:更多代码: while (( i++ < ${#word} )); do #$char current char char=$(expr substr "$

我有一个关联数组:

lettres['A']=0
…(from 'A' to 'Z')…
lettres['Z']=0
我的问题很简单:如何获取一个元素的值并增加它?我尝试了以下方法:

lettres[$char]=${lettres[$char]}++
但它失败了,因为结果是«0++++»。如何轻松地增加值

编辑:更多代码:

while (( i++ < ${#word} )); do
    #$char current char
    char=$(expr substr "$word" $i 1)
    if [[ "${mot[@]}" =~ "${char} " || "${mot[${#mot[@]}-1]}" == "${char}" ]]; then
        #char is currently in array $mot -> skipping
        echo 'SKIPPING'
    else
        #Char is not in array $mot -> adding + incrementing lettres
        ((lettres[char]++))
        echo ${lettres[$char]}
        #Adding to $mot
        mot[${#mot[@]}]=$char
    fi
    echo "<$char>"
done
while((i++<${word}));做
#$char当前字符
char=$(expr substr“$word”$i 1)
如果[[“${mot[@]}”=~“${char}”| |“${mot[${mot[@]}-1]}”==“${char}”];然后
#字符当前位于数组$mot->跳过
回声“跳跃”
其他的
#Char不在数组$mot->adding+incrementing lettres中
((lettres[char]++)
echo${lettres[$char]}
#增加到$mot
mot[${#mot[@]}]=$char
fi
回声“”
完成

使用bash版本4及更高版本,这将起到以下作用:

$ declare -A lettres
$ char=B
$ ((lettres[$char]++))
$ echo "${lettres['A']}"
0
$ echo "${lettres['B']}"
1

(())
强制一个,您可以在其中增加数组元素的值。请注意,这也是为了保证与标准索引数组的最大向后兼容性。

使用bash版本4及更高版本,这将起到以下作用:

$ declare -A lettres
$ char=B
$ ((lettres[$char]++))
$ echo "${lettres['A']}"
0
$ echo "${lettres['B']}"
1
(())
强制一个,您可以在其中增加数组元素的值。请注意,这也是为了保证与标准索引数组的最大向后兼容性。

不要说“不,不起作用…”,然后在没有进一步注释的情况下发布一些代码,制作一个可运行的测试用例,指向相关行,说明您尝试了什么,发生了什么,以及您期望发生什么。例如,“lettres[F]在这一行是3。我在下一行尝试了你的建议,但之后,它仍然是3,而我预期它是4”,而不是说“不,不起作用…”,然后发布一些代码,没有进一步的注释,制作一个可运行的测试用例,指向相关行,说出你尝试了什么,发生了什么,以及你预期会发生什么。例如,“lettres[F]在这一行中是3。我在下一行中尝试了你的建议,但后来,它仍然是3,而我预期它是4”