我需要在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--
答案 0 :(得分:1)
您可以使用printf
:
printf 'foo_%s\n' "${!aa[@]}"
foo_A
foo_B
foo_C