在 sed 替换中引用 ${variable} 值

在 sed 替换中引用 ${variable} 值

我正在尝试替换几个类似的 sql 脚本中的字符串。在我的工具箱中,我有一个bash 脚本for loop以及 和grepsed

#!/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

相关内容