Você não pode alterar a maneira como as chaves funcionam.
Se houver uma string que não aparece no texto, digamos ,
, você pode aplicar sucessivas substituições de string a uma matriz:
a=(,b,e @c,f)
a=("${a[@]/,/a/}")
a=("${a[@]/,/d}")
echo "${a[@]}"
Um loop seria mais claro. Se você quiser juntar as peças, você pode usar um separador que não aparece nas seqüências, digamos ,
, o que seria especial dentro de chaves de qualquer maneira.
a=(); IFS=,; set -f
for x in b,e c,f; do
a+=(a${x%*,}d${x#*,})
done
Outra abordagem é definir duas matrizes paralelas.
version=(test main)
files=(AppTest.java App.java)
for ((i=0; i<${#files}; i++) rm "src/$version[i]/java/org/sonatype/mavenbook/files[i].java"
Acho que a maneira mais fácil de lidar com esse comando específico seria definir uma função.
rmapp () { rm "src/$1/java/org/sonatype/mavenbook/$2.java"; }