Esta questão foi parcialmente inspirada pelo link , embora essa página seja sobre arrays indexados em vez de arrays associativos .
O GNU Bash fornece uma sintaxe que permite que prefixos ou sufixos sejam prefixados ou anexados aos valores de cada membro de uma matriz associativa durante a expansão:
$ declare -A MY_ARRAY
$ MY_ARRAY[ALPHA]=alpha; MY_ARRAY[BETA]=beta; MY_ARRAY[GAMMA]=gamma
$ echo "${MY_ARRAY[@]/#/a}" # prepend 'a' to beginning
aalpha abeta agamma
$ echo "${MY_ARRAY[@]/%/a}" # append 'a' to end
alphaa betaa gammaa
No entanto, essa sintaxe parece não funcionar quando aplicada às subseqüências (ou seja, nomes ou chaves) desses membros:
$ echo "${!MY_ARRAY[@]/#/a}" # attempt to prepend 'a' to beginning
bash: gamma beta alpha: bad substitution
$ echo "${!MY_ARRAY[@]/%/a}" # attempt to append 'a' to end
bash: gamma beta alpha: bad substitution
Existe alguma sintaxe de expansão disponível que daria as seguintes saídas?
aALPHA bBETA gGAMMA
ALPHAa BETAb GAMMAg
Tags gnu bash-expansion