sed 置換で ${variable} 値を引用

sed 置換で ${variable} 値を引用

いくつかの同様のSQLスクリプトで文字列を置き換えようとしています。私のツールボックスにbashスクリプトfor loopgrepsed

#!/usr/bin/env bash

for efa_instance in efa_bauen_bb efa_bauen_bw
do
        echo ${efa_instance}
        secret=$(grep ${efa_instance}_user efa_secret.csv | cut -d\; -f3)
        echo ${secret}
        echo replacing password for ${efa_instance}
        sed -i 's/<via Mail>/${secret}/' ${efa_instance}.service.sql
done

ただし、実際には文字列を変数に格納されている値ではなく<via Mail>文字列に置き換えます。${secret}${secret}

コンポーネントは期待どおりに動作します。単にsedを使ってプレースホルダを実際に置き換えようとすると失敗しました。

私は明らかなものを見ていませんか?それとも私のアプローチに設計上の欠陥がありますか?

言及する価値があるかもしれません(誰がお勧めしたい場合のみ)...私はawkを使ったことがないし、otに問題があるかどうかわかりません。

答え1

"代わりに使用してください'

sed -i "s/<via Mail>/${secret}/" ${efa_instance}.service.sql

関連情報