[英]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.