Bash:向关联数组添加值,而key =>值已存在

时间:2016-06-03 14:41:09

标签: bash associative-array

如何在关联数组中为现有键添加值?

declare -A DATA
DATA=([foo]="bar" [foo2]="bar2" [foo3]="bar3")

应该像

DATA=([foo]="bar text" [foo2]="bar" [foo3]="bar")

2 个答案:

答案 0 :(得分:5)

您可以使用+=

DATA[foo]+=" test"

如果它不存在,则会将foo添加为关键字;如果这是一个问题,请务必首先确认foo实际上是关键。

# bash 4.3 or later
[[ -v DATA[foo] ]] && DATA[foo]+=" test"

# A little messier in 4.2 or earlier; here's one way
( : ${DATA[foo]:?not set} ) 2> /dev/null && DATA[foo]+=" test"

答案 1 :(得分:1)

您可以使用作业右侧的旧值。

#!/bin/bash
declare -A DATA
DATA=([foo]="bar" [foo2]="bar2" [foo3]="bar3")

DATA[foo]=${DATA[foo]}' text'
DATA[foo2]=${DATA[foo2]:0:-1}
DATA[foo3]=${DATA[foo3]:0:-1}

declare -p DATA
# DATA=([foo]="bar text" [foo2]="bar" [foo3]="bar")