sedを介した通常の検索/置換よりも少し複雑なもののbashスクリプトを作成しようとしています。私はbashCookbookという本を持っていて、そこからインスピレーションを得ようとしていますが、それほど遠くはありません。
基本的に、私は一連のmavenpom.xmlファイルのバージョン番号を自動的に更新するスクリプトを作成しようとしています。これが私が見ている一般的な設定です:
<!-- TEMPLATE:BEGIN
<version>@@VERSION@@</version>
-->
<version>1.0.0</version>
<!-- TEMPLATE:END -->
スクリプト(新しいバージョン番号1.0.1)を実行した後、代わりにファイルにこれを読み取らせたい:
<!-- TEMPLATE:BEGIN
<version>@@VERSION@@</version>
-->
<version>1.0.1</version>
<!-- TEMPLATE:END -->
したがって、これは実際のリリースpomファイルにあり、1.0.0が現在のバージョンです(そして私はそれを1.0.1か何かに置き換えようとしています)。明らかにバージョン番号が変更されるため、検索/置換を行うための良い方法はありません(検索したいものは可変であるため)。私はできるbashスクリプトを書くことができることを望んでいます
- @@VERSION@@を実際のバージョン番号に置き換えます
- 現在のバージョン行を削除する
- TEMPLATE:ENDの前の行に更新されたバージョン行を書き込みます(ファイル内の@@ VERSION @@を保持しながら、テンプレートを一時ファイルに書き込み、置換を実行してから、元に戻すことでこれを実行できますか?)
antスクリプトを使用して、これの一部(新しいファイルへの書き込み、置換の実行)を行うことができます。
<replace file="pom.xml">
<replacefilter
token="@@VERSION@@"
value="${version}"/>
</replace>
しかし、a。)古いバージョンの行を削除する、またはb。)新しい行を正しい場所にコピーするように指示する最善の方法がわかりません。誰かがこれを行う方法を知っているか、何かアドバイスがありますか?