我想在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变量正则表达式替换中不支持捕获.我还可以存储一个临时数组变量
PRE=(${ARRAY[@]/#/prefix_}) echo ${PRE[@]/%/_suffix}
这可能是我能想到的最好的,但它似乎仍然低于标准杆.最后一种选择是使用类似于的for循环
EXPANDED="" for E in ${ARRAY[@]}; do EXPANDED="prefix_${E}_suffix $EXPANDED" done echo $EXPANDED
但这太丑了.如果我想要前缀后缀或数组元素的空格,我也不知道如何让它工作.
您的上一个循环可以通过以空格友好的方式完成:
EXPANDED=() for E in "${ARRAY[@]}"; do EXPANDED+=("prefix_${E}_suffix") done echo "${EXPANDED[@]}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。