关于linux:Bash脚本警告-HERE文档以文件结尾分隔

Bash Script warning - HERE document delimited by end of file

本问题已经有最佳答案,请猛点这里访问。

我有一个如下的sql文件

1
2
3
4
5
#!/usr/bin/env bash

cat <<'VERBATIM_SQL'
INSERT INTO t_random VALUES (generate_series(1,9999999999), md5(random()::text));
VERBATIM_SQL

像下面这样从外壳程序脚本调用该sql文件

1
2
3
4
5
#!/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

执行时,我收到如下警告

1
Loop 1./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `VERBATIM_SQL')

有人可以让我知道为什么会发出警告吗?

编辑

我做了其中一项评论中所建议的

1
2
support@vrni-platform:~/postgres_junk$ dos2unix insert.sql
dos2unix: converting file insert.sql to Unix format ...

但是仍然收到同样的警告

1
./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `VERBATIM_SQL')


Shell对于它们将接受此处文档终止非常挑剔。 它必须与提供的令牌完全匹配。 特别是,您应检查以下内容:

  • 终端行没有Windows行尾

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