쉘 변수에서 SQL 명령 "Select * from table_name"을 전달하는 방법

쉘 변수에서 SQL 명령 "Select * from table_name"을 전달하는 방법

쉘 변수를 사용하여 SQL 문을 인쇄하려고 하는데 예상한 결과가 나오지 않습니다.

pdate=`date +%d-%b-%Y`
query='"select \* from table_name where partition_date='"$pdate"' and \$CONDITIONS"'
echo $query

예상 출력:

"select * from table_name where partition_date="30-Nov-2018" and \$CONDITIONS"

실제 출력:

"select \* from table_name where partition_date=30-Nov-2018 and \$CONDITIONS"

답변1

원하는 출력을 얻으려면 다음을 수행하십시오.

pdate=$(date +%d-%b-%Y)
query='"select * from table_name where partition_date="'"$pdate"'" and \$CONDITIONS"'
# ............^^ no backslash ........................^..........^ quotes as plain chars
echo "$query"

Bash의 대안은 다음과 같습니다 printf. 인용을 단순화할 수 있습니다.

printf -v query '"select * from table_name where partition_date="%s" and \$CONDITIONS"' "$pdate"

관련 정보