&&を含む文字列をsedに置き換えます。

&&を含む文字列をsedに置き換えます。

技術承認テストを自動化するためのいくつかのスクリプトを作成しました。パスワードをプレーンテキストとして書き込むことは許可されていないため、私が使用するスクリプトは複数の変数に関連付けられており、そのうちの1つはパスワードです。実行する前に、password.key=mycryptedpasswordファイルからその行を取得し、パスワードを復号化してスクリプトで使用します。その後、キーをスクリプトで使用される一時ファイルのパスワードに置き換えようとしました。ここで問題が発生します。次のコードを使用します。

sed -i -e 's/$key/$decryptedPassword/g' json.tmp

一般的にはうまくいきますが、私が出会ったパスワードの1つは次のとおりです。cl&&TiT8

sedとlinux(私は基本的にredhatでkshシェルを使用しています)にこれらの&&。もしかしたらこんなに奇妙なパスワードを使う方に会うかと心配になるのにどう対処すればいいですか?

概要:これが私がしたことですsed -i -e 's/$key/$decryptedPassword/g' json.tmp。当時、$decryptedPassword = cl&&TiT8これはうまくいきませんでした。

ベストアンサー1

sedでこれを行うと、そのs/regexp/replacement/文字&replacement特別な意味を持ち、その文字が表示されると一致する文字列に展開されますregexp。したがって、次のようにエスケープする必要があります\

sed -i -e 's/$key/cl\&\&TiT8/g' json.tmp

/また、and'\andもエスケープする必要があります$key$decryptedPassword

sedコマンドを置き換える方法は$key$decryptedPassword

おすすめ記事