.envというファイルがあります。
このファイルにはMYIP =変数があり、MYIP =の前にパブリックIPを入力する必要があります。
この公開内容をpublicip.txtという別のファイルに入れました。
publicipファイルの出力を使用し、前にMYIP =を追加したいと思います。
MYIP=を削除し、次のコマンドを試してみました。
echo "MYIP=" | cat - publicip >> .env
しかし、ファイルでMYIP = 177.XX.XX.XXという情報を確認しました。
同じ行にはありません。誰が私を助けることができますか?
答え1
これを行う方法はいくつかあります。cat
あまり一般的ではないオプションの1つですが、まだ完全に実行可能です。あなたはほとんどそれを持っていますが、echo
改行文字があります。フラグを使用してこれを抑制できます-n
。
echo -n "MYIP=" | cat - publicip >> .env
答え2
.envファイルに保存したい他のコンテンツが含まれていると仮定すると、1つのアプローチはMYIP割り当てをPerlに置き換えることです。
perl -pe 's/MYIP=.*/MYIP='`cat publicip`'/' -i .env
テキストツール(perl
、、、、)を使用するすべての同様のソリューションでは、誤った形式で破損しやすいcat
ため、ファイルを完全に制御できることを確認してください。安全な環境でこれらのモノライナーを使用するように注意してください。そうしないと、適切に固定することはほとんど不可能であり、状況が奇妙になる可能性があります。sed
awk
publicip
これらの安全対策を講じる1つの方法は、.env
ファイルを所定の場所に変更せずにいくつかのテンプレートを使用し、それらをマージ/交換して出力ファイルを作成することです。悪意のある、または間違ったことが発生した場合(またはファイルが切り捨てられる空き領域がない場合など)は役に立ちませんが、少なくともテンプレートファイルの内容を失うことがないため、回復できます。.env
。