psql 쿼리 실행 및 출력 오류: '$' 또는 그 근처에 구문 오류가 있습니다.

psql 쿼리 실행 및 출력 오류: '$' 또는 그 근처에 구문 오류가 있습니다.

psql 쿼리를 실행하려고 하는데 '$' 근처에 구문 오류가 발생하여 출력 오류가 발생합니다.

psql에서 쿼리 실행

 ➤ psql://postgres@dev-postgresql-95-1:5432/mydb 

# CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;
CREATE FUNCTION

Bash에서 쿼리 실행

-bash-4.2$ psql -d mydb -c "CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;"
ERROR:  syntax error at or near "$"
LINE 1: ... FUNCTION f_showfile(myfile text) RETURNS text AS $ BEGIN RE...

Bash에서 psql 쿼리를 올바르게 실행하는 방법은 무엇입니까? 감사해요

답변1

보낸 문자열에는 다음이 포함됩니다.

$x$

bash에 의해 변수의 내용으로 확장됩니다 $x. As $x가 비어 있으면 $x$로 바꿉니다 $. 큰따옴표 대신 간단한 따옴표를 사용하면 변수 확장을 피할 수 있습니다.

psql -d mydb -c 'CREATE FUNCTION f_showfile(myfile text) RETURNS text AS $x$ BEGIN RETURN pg_read_file(myfile, 0, 100000); END; $x$ LANGUAGE PLPGSQL SECURITY DEFINER;'

관련 정보