如何在Bash中增加关联数组

时间:2014-10-15 20:31:52

标签: 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 "$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

1 个答案:

答案 0 :(得分:5)

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

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

(( ))强制arithmetic context,您可以在其中增加数组元素的值。请注意,它也是recommended to use declare -A以保证与标准索引数组的最大向后兼容性。