2016-12-27 13 views
1

には、config.phpというようなものが含まれています。私がする必要がどのような

<?php 
$main="dev.digin.io"; 

$main=後に含まれている文字列値が$MainDomainなどのシェル変数の内容に置き換えする必要が何であれ、です。

最終的なconfig.phpはこのようにする必要があります。

<?php 
$main="prod.mail.com"; 

答えて

0

この厄介に見えるsedの置換が何をしたいあなたを取得:

$ MainDomain=prod.mail.com 
$ sed -E "s/^(\\\$main=\")[^\"]+(\";)$/\1$MainDomain\2/" config.php 
<?php 
$main="prod.mail.com"; 

は、「インプレース」ファイルを編集する-iスイッチを追加します。 -i.bakを使用して、バックアップファイルconfig.php.bakを作成します。

このような状況では、構成ファイルを使用してPHPコードを読み取って読み取るようにしているように見えます。このようなソースコードを変更するのは危険なビジネスです。

+0

「sed -i」s/^(\\\ $ mainDomain = \ ")[^ \"] +(\ ";)$/\ 1 $ MainDomain \ 2 /"/var/www/html/include/config.php' これはシェルプロンプトで以下のように表示されます何か考えてください? ** sed:-e式#1、char 49:無効な参照\ 2 's 'コマンドのRHS ** – Daz

+0

' '-E'スイッチを使用しないでください。つまり、キャプチャグループをエスケープする必要があります。' -E'スイッチを追加します。特に、テスト時に '-i'でバックアップ接尾辞を使用する必要があります。 –

+0

それはコンソールの正しい出力を印刷しますが、ファイルを変更しないでください。どんな考えですか? – Daz

0

@Daz(bashシェル変数が$ MainDomain = prod.mail.comのようないくつかの本から成る検討する)は、次の手順を試してください可能性があり、これがあなたを助けている場合、私に知らせてください。

awk -vVAR="$MainDomain" '/\$mainDomain/{sub(/=.*/,"="VAR,$0);} 1' Input_file 

ここで、-vVAR = "$ MainDomain" VARはawkの変数で、MainDomainの値という名前のシェル変数を持ちます。 awkでは変数の値を直接シェルすることはできませんので、これをawkの変数に代入して使用する方法です。

同じ質問がある場合は教えてください。

関連する問題