Bash字符串替换大括号

时间:2017-07-25 14:03:32

标签: bash

我尝试替换{string}形式的字符串但不知何故它不起作用。

regex='\{\w*\}'
pattern="{test}_test1"
while [[ $pattern =~ $regex ]]; do
    toreplace=${BASH_REMATCH[@]}
    pattern=${pattern/toreplace/replaced}
done
echo $pattern

除了以下输出外,我会这样做:

replaced_test1

2 个答案:

答案 0 :(得分:1)

bash正则表达式无法识别

\ w

regex='\{[[:alpha:]]*\}'
pattern="{test}_test1"
while [[ $pattern =~ $regex ]]; do
    toreplace=${BASH_REMATCH[0]}
    pattern=${pattern/${toreplace}/replaced}
done
echo $pattern

答案 1 :(得分:1)

你错过了一个“$”和qutoes,改变它所以看起来更像是这样:  pattern="${pattern/$toreplace/replaced}"

它可以正常工作,在GNU bash版本3.2.52上进行测试