我有两个变量 -
regex="<version>[0-9]*\.[0-9]*\.[0-9]*[^<]*<\/version>"
updated_regex="<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>"
我想在以下命令中使用 -
sed "s/$regex/$updated_regex/1" pom.xml
但它不起作用,因为正则表达式和变量没有在我的命令中被评估或替换。
答案1
正如我在评论中所说的那样,当你运行该行时
updated_regex="<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>"
该变量updated_regex
将被分配该字符串,其中所有这些变量将在运行此行时扩展。
当你运行该sed
行时,将使用此字符串,但顶行内的变量不会再次扩展。因此解决方案是使用以下内容:
regex="<version>[0-9]*\.[0-9]*\.[0-9]*[^<]*<\/version>"
sed "s/$regex/<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>/1" pom.xml