いくつかの同様の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