如何在Bash中增加关联数组

chi*_*dit 1 arrays bash

我有这个关联数组:

lettres['A']=0
…(from 'A' to 'Z')…
lettres['Z']=0
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:如何获取一个元素的值并递增它?我尝试过以下方法:

lettres[$char]=${lettres[$char]}++
Run Code Online (Sandbox Code Playgroud)

但它失败了,因为结果是«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
Run Code Online (Sandbox Code Playgroud)

Tom*_*ech 6

使用bash版本4及更高版本,这将工作:

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

所述(( ))力的算术上下文,在其中可以递增数组元素的值.请注意,还建议使用它declare -A来保证与标准索引数组的最大向后兼容性.