SEDコマンドはDebianのbashを置き換えませんが、コマンドラインで使用できます。
コマンドラインでの作業:
sed -i 's|/dev/disk/by-label/SR6D4|/dev/disk/by-label/SR4D4|g' /etc/my/config.xml
Bashスクリプトでは機能しません。文字列を置き換えません。
from="SR6D4"
to="SR4D4"
path_from="/dev/disk/by-label/${from}"
path_to="/dev/disk/by-label/${to}"
echo "sed -i 's|${path_from}|${path_to}|g' $file"
sed -i 's|${path_from}|${path_to}|g' $file
Bashでsedを使用するときにファイルの文字列が置き換えられないのはなぜですか?
ベストアンサー1
シェル変数は一重引用符内では拡張されません。 (これは一重引用符の使用に似ています。)
sed -i "s|${path_from}|${path_to}|g" "$file"
もっとうまくいくはずです。 ($file
ファイル名にスペースが含まれている場合に備えて二重引用符を追加しました。)