У меня есть две переменные -

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 ответ1

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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .