Bash: 向关联数组添加值,而键=>值已经存在
Bash: Add value to associative array, while a key=>value already exists
如何向关联数组中的现有键添加值?
declare -A DATA
DATA=([foo]="bar" [foo2]="bar2" [foo3]="bar3")
应该是这样的
DATA=([foo]="bar text" [foo2]="bar" [foo3]="bar")
您可以使用 +=
.
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"
您可以使用赋值右侧的旧值。
#!/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")
如何向关联数组中的现有键添加值?
declare -A DATA
DATA=([foo]="bar" [foo2]="bar2" [foo3]="bar3")
应该是这样的
DATA=([foo]="bar text" [foo2]="bar" [foo3]="bar")
您可以使用 +=
.
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"
您可以使用赋值右侧的旧值。
#!/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")