11

我正在尝试编写 PostgreSQL 脚本,但 shebang 行有问题

#! /usr/bin/psql [ psql_args_here ] -f

select now();

这给了我错误,就好像我刚刚psql在命令行中输入没有任何参数一样。我该怎么做?

4

2 回答 2

15

问题是 psql 不会跳过文件的第一行。

你可以试试

#! /bin/sh
exec sh -c "tail -n +3 $0 | psql -f -"

select now();

或者干脆

#! /bin/sh
psql << E_O_SQL

select now();

E_O_SQL
于 2010-10-22T10:04:18.333 回答
6

还有一个更好的解决方案。第一行应该是:

--() { :; }; exec psql -f "$0"

它可以作为普通的 shebang #!

http://rosettacode.org/wiki/Multiline_shebang#PostgreSQL

于 2018-04-19T19:35:38.120 回答