여러 유사한 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