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

相关内容