繁体   English   中英

如何在Bash中增加关联数组

[英]How to increment an associative array in 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

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

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

(( ))强制执行算术上下文 ,您可以在其中增加数组元素的值。 请注意,还建议使用declare -A以保证与标准索引数组的最大向后兼容性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM