我有一个类似下面的SQL文件
#!/usr/bin/env bash
cat <<'VERBATIM_SQL'
INSERT INTO t_random VALUES (generate_series(1,9999999999), md5(random()::text));
VERBATIM_SQL
从shell脚本
调用sql文件如下所示#!/usr/bin/env bash
./insert.sql | psql -U postgres -p 5432 -h localhost -d vnera
./insert.sql | psql -U postgres -p 5432 -h localhost -d vnera
./insert.sql | psql -U postgres -p 5432 -h localhost -d vnera
执行时我收到如下警告
Loop 1./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `VERBATIM_SQL')
有人可以告诉我为什么会出现此警告?
修改
我做了其中一条评论中建议的内容
support@vrni-platform:~/postgres_junk$ dos2unix insert.sql
dos2unix: converting file insert.sql to Unix format ...
但仍然得到相同的警告
./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `VERBATIM_SQL')
答案 0 :(得分:0)
Shells非常挑剔他们将接受什么作为here-doc终止。它必须与提供的令牌精确匹配。特别是,您应该检查:
终止行没有Windows行结尾
终止线上没有尾随空格。 (它也不能缩进。)