2017-07-29 13 views
0

私はVestaCPパネルのIPを自動的に変更するコードを書いています。 変数$ oldIPを新しい変数$ newIPに置き換えるコードが必要なので、このコードを書きました。Bashの検索と置換文字列

sudo perl -pi -e 's/${oldIP}/${newIP}/g' /etc/nginx/conf.d/${oldIP}.conf 

しかし、このコードは、oldIP.conf(123.123.123.123.conf)のoldIPを置き換えません。私は

sudo perl -pi -e 's/123.123.123.123/123.456.123.456/g' /etc/nginx/conf.d/123.123.123.123.conf 

をしようとした場合、これまでのサーバーが異なるIPを持っているので、私はこのコードを使用することはできませんし、それが変化したときに、私は次のIPを予測することはできませんが、

しかし、それは、完璧に動作します。

私はここで間違っていますか?どんな解決策ですか?前もって感謝します!

P.S.それが知っているなら、私はUbuntu 16.04を使っています。

答えて

3

変数はシングルクォーテーションでは展開されません。代わりに二重引用符を使用してください:

sudo perl -pi -e "s/${oldIP}/${newIP}/g" /etc/nginx/conf.d/${oldIP}.conf 
+1

ありがとうございます!それが私の問題を解決しました。私はその愚かな間違いを笑ったとは信じられない –

関連する問題