というファイルがありますマイファイル.txt次のコンテンツが含まれています。
ユーザー名=私のユーザー名
暗号化されたパスワード=9k3S+sS3g\=\=
ユーザー名とパスワードを変更する必要があるたびにシェルスクリプトを実行します。シェルスクリプトは、保存されたユーザー名とパスワードを次の2つの変数に保存します。
前のユーザー名 = "私のユーザー名" 前の
パスワード = "9k3S+sS3g\=\="newusername="私の新しいユーザー名"
新しいパスワード="U8djlk+h=="
sed -i "s/$oldusername/$newusername/g" MyFile.txt
sed -i "s/$oldpassword/$newpassword/g" MyFile.txt
最初の sed は正しく機能し、ユーザー名を置き換えますが、2 番目の sed コマンドは機能せず、ファイルのパスワードは変更されません。変数に「\」文字があるためです。
誰でもこの問題を解決し、解決策を教えてもらえますか?
ありがとうございます..
ベストアンサー1
愚かな回避策、すべてのバックスラッシュを避けてください。
oldpassword="$(printf "$oldpassword" | sed 's/\\/\\\\/g')"
sed -i "s/$oldpassword/$newpassword/g" MyFile.txt