Я хочу предварительно и постфиксный массив в bash аналогично расширению скобки.
Скажем, у меня есть массив bash
ARRAY=( one two three )
Я хочу иметь возможность пред- и постфиксации, как и следующее расширение раскладки
echo prefix_{one,two,three}_suffix
Лучшее, что я смог найти, использует bash regex для добавления префикса или суффикса
echo ${ARRAY[@]/#/prefix_}
echo ${ARRAY[@]/%/_suffix}
но я не могу найти ничего о том, как сделать это одновременно. Потенциально я мог бы использовать регулярные выражения и делать что-то вроде
echo ${ARRAY[@]/.*/prefix_$1_suffix}
но похоже, что захваты поддерживаются в подстановке переменных bash regex. Я мог бы также хранить временную переменную массива, например
PRE=(${ARRAY[@]/#/prefix_})
echo ${PRE[@]/%/_suffix}
Это, наверное, лучшее, что я могу придумать, но все же кажется, что он подпадает. Конечной альтернативой является использование цикла for, близкого к
EXPANDED=""
for E in ${ARRAY[@]}; do
EXPANDED="prefix_${E}_suffix $EXPANDED"
done
echo $EXPANDED
но это супер уродливо. Я также не знаю, как бы я мог заставить его работать, если бы мне нужны пробелы где угодно, суффикс префикса или элементы массива.