Prefira ou acrescente substrings ao expandir o array associativo no GNU Bash

0

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
    
por sampablokuper 08.05.2018 / 02:08

0 respostas