sed 대체에서 ${variable} 값 인용

sed 대체에서 ${variable} 값 인용

여러 유사한 SQL 스크립트에서 문자열을 바꾸려고 합니다. 내 도구 상자에는 bash 스크립트 for loopgrep.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

관련 정보