私のスクリプトに問題があります。その目的は、呼び出されたファイルの値をパス名に%DIR%
なるように変更することです。問題は、ディレクトリ名のスラッシュがsedを台無しにして奇妙なエラーが発生することです。パス名のスラッシュをエスケープスラッシュに変換する必要があります。
だから/var/www
それはなります\/var\/www
しかし、どうすればいいのかわかりません。
スクリプトがsedを実行する現在の方法は次のとおりです。
sed -i "s/%DIR%/$directory/g" "$config"
ベストアンサー1
Bashを使用すると言ったので、次のことができます。パラメータ拡張スラッシュ挿入:
$ directory=/var/www
$ echo "${directory//\//\\/}"
\/var\/www
これは次のように分類されます。
- 変える
directory
- それぞれ交換(
//
) - スラッシュ(
\/
) - そして(
/
) - バックスラッシュ+スラッシュ(
\\/
)。
これをsedコマンドに入れると、次のようになります。
sed -i "s/%DIR%/${directory//\//\\/}/g" "$config"