sed#
変換先文字列に区切り文字(ex. スラッシュ)が含まれる場合は区切り文字にスラッシュが使えない。#
以下は動作せず、
TARGET="/var/tmp"
TO="/run"
echo "$TARGET" | sed -e "s/tmp/$TO/"
以下のエラーが出る。
sed: -e expression #1, char 8: `s' に対するオプションが不明です
これは$TOが展開されることを考えれば理解できる。"s/tmp//run/" ではsedが評価できない。
区切り文字に別の文字を使ってやればよい。 sedはsの直後の文字を区切り文字にするので、例えばコロン使えば以下のように書ける。
TARGET="/var/tmp"
TO="/run"
echo "$TARGET" | sed -e "s:tmp:$TO:"