【发布时间】:2013-12-20 10:08:34
【问题描述】:
我想在 bash 中为数组添加前缀和后缀,类似于大括号扩展。
假设我有一个 bash 数组
ARRAY=( one two three )
我希望能够像下面的大括号扩展一样对它进行前缀和后缀
echo prefix_{one,two,three}_suffix
我能找到的最好的方法是使用 bash 正则表达式来添加前缀或后缀
echo ${ARRAY[@]/#/prefix_}
echo ${ARRAY[@]/%/_suffix}
但我找不到任何关于如何同时执行这两项操作的信息。可能我可以使用正则表达式捕获并做类似的事情
echo ${ARRAY[@]/.*/prefix_$1_suffix}
但 bash 变量正则表达式替换似乎不支持捕获。我还可以存储一个临时数组变量,例如
PRE=(${ARRAY[@]/#/prefix_})
echo ${PRE[@]/%/_suffix}
这可能是我能想到的最好的,但似乎仍然低于标准。最后一种选择是使用类似于
的for循环EXPANDED=""
for E in ${ARRAY[@]}; do
EXPANDED="prefix_${E}_suffix $EXPANDED"
done
echo $EXPANDED
但这太丑了。如果我想在前缀后缀或数组元素的任何地方使用空格,我也不知道如何让它工作。
【问题讨论】: