Bash:将值添加到关联数组,而键=>值已存在

am1*_*am1 0 bash associative-array

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

declare -A DATA
DATA=([foo]="bar" [foo2]="bar2" [foo3]="bar3")
Run Code Online (Sandbox Code Playgroud)

应该是这样的

DATA=([foo]="bar text" [foo2]="bar" [foo3]="bar")
Run Code Online (Sandbox Code Playgroud)

che*_*ner 6

您可以使用+=

DATA[foo]+=" test"
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)