我正在尝试运行 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;'