如何在bash关联数组的键上执行模式替换

时间:2017-08-23 10:35:09

标签: bash

我需要在bash关联数组的键上执行模式替换。例如:

$ declare -A aa=( [A]=0 [B]=1 [C]=2 )

要将加上foo_作为前缀,可以使用:

$ echo --${aa[@]/#/foo_}--
--foo_0 foo_1 foo_2--

但如何在前加?这不起作用(至少在GNU bash版本4.3.30(1)-release中):

$ echo --${!aa[@]/#/foo_}-- # <- does not work
----

有没有比以下解决方法更好的方法?

$ declare -a keys=( ${!aa[@]} )
$ echo --${keys[@]/#/foo_}--
--foo_A foo_B foo_C--

1 个答案:

答案 0 :(得分:1)

您可以使用printf

printf 'foo_%s\n' "${!aa[@]}"

foo_A
foo_B
foo_C