展開スクリプトを開発しており、構成ファイル内のデータベース(または他のシステム)資格情報を置き換える必要があります。
次の資格情報を含むPHPファイルがあります。
<?php
return [
'mysql-rw' => [
'dns' => 'mysql-rw.local',
'user' => 'local',
'password' => 'PASS__LABELONE__',
],
'mysql-ro' => [
'dns' => 'mysql-ro.local',
'user' => 'local',
'password' => 'PASS__LABELTWO__',
],
];
LABELONE
また、CIサーバーにBash環境変数が設定されています。ファイルのテンプレートを1行のコマンドに置き換えたいLABELTWO
のですが、エラーまたは代替エラーがあります。sed
LABELONE=pass1 LABELTWO=pass2 sed -r "s/PASS__(.+)__/${!\1}/" tst.txt
bash: s/PASS__(.+)__/${!\1}/: bad substitution
私のアプローチは次のとおりです。
- ファイル内のテンプレートを探す
- タグをキャプチャします(PASS__LBL__ではLBLです)。
- テンプレートをenvに置き換えます。変数($ LBL)
そのような動的変数をどのように評価できますかsed
?それとも非現実的なものですか?
ベストアンサー1
Perlは%ENVハッシュを介してenv変数にアクセスできます。
LABELONE=pass1 LABELTWO=pass2 perl -pe 's/PASS__(.+)__/$ENV{$1}/' -- tst.txt