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;'