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

おすすめ記事