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