Bash脚本警告 - 此文档以文件结尾分隔

时间:2017-11-26 15:27:22

标签: linux bash shell

我有一个类似下面的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')

1 个答案:

答案 0 :(得分:0)

Shells非常挑剔他们将接受什么作为here-doc终止。它必须与提供的令牌精确匹配。特别是,您应该检查:

  • 终止行没有Windows行结尾

  • 终止线上没有尾随空格。 (它也不能缩进。)