变量名扩展多次替换

时间:2016-02-23 16:06:33

标签: bash glob

我想知道如何用变量扩展替换多个模式。

VAR=A_B_C_D_E

我想要的结果是A_C_E而不使用临时变量。

RESULT_TMP=${VAR/_B/}
RESULT=${RESULT_TMP/_D/}

我做了一些这样的试验:

${${VAR/_B/}/_D/}

没有任何成功。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以在BASH字符串替换中使用此glob模式:

s='A_B_C_D_E'
echo "${s//_[BD]/}"
A_C_E

_[BD]将匹配_B_D//将进行全局替换。

编辑:关于其他问题:

  

但是如果B和D是字符串:A_FOO_C_BAR_E

在这种情况下你可以使用extglob

shopt -s extglob

s=`A_FOO_C_BAR_E`
echo "${s//_@(FOO|BAR)/}"
A_C_E