我正在尝试替换几个类似的 sql 脚本中的字符串。在我的工具箱中,我有一个bash 脚本for loop
以及 和grep
。sed
#!/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