設定ファイルの{$pear_root}
のインスタンスをシェルスクリプトの$PEAR_ROOT
変数に置き換えようとしています。 「バッシュエスケープ文字に関する注意」の下hereからメソッドを使用してシンプルなBASH文字列置換
は私が持っている:
ESC_PEAR_ROOT="${PEAR_ROOT//\//\\/}"
sed -i "s/{\$pear_root}/${ESC_PEAR_ROOT}/"../.serverconfig/test.txt
私は戻って34を取得しています:私は、これはサポートされていないことを意味するかもしれないと思う悪い置換を。
またはperl
でこれを行うかどうかにかかわらず、同じエラーが発生するため、問題はs/find/replace/
を使用しているようです。
APP_ROOT=$(php ./scripts/get_realpath.php '../')
PEAR_ROOT="$APP_ROOT/pear"
ESC_PEAR_ROOT="${PEAR_ROOT//\//\\/}"
sed -e "s/{\$pear_root}/${ESC_PEAR_ROOT}/"../.serverconfig/test.txt
そしてPEAR_ROOT
からのパスに置き換えtest.txt
で{$pear_root}
のすべてのインスタンスで終わる:
これを実行する最も簡単な方法は何ですか?
私はこの方法には添付されていません。信頼できる方法はありません。
:
最終結果はと終わりましたか?あなたは例を挙げることができますか? –
あなたは式の第2部分で$をエスケープしていません。 – John3136
@evil otto:ESC_PEAR_ROOTはすべてのスラッシュがあった場所で終わると思います。私はこの1つのステートメントのためにそれを必要としますが、後で使うために元のPEAR_ROOTも必要です。したがって、PEAR_ROOTをエスケープした場合、後でパスとして使用することはできません。 – Eli