Linux Bash脚本警告-此处文档由文件结尾分隔

Linux Bash脚本警告-此处文档由文件结尾分隔,linux,bash,shell,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 Loop 1./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (want

我有一个如下所示的sql文件

#!/usr/bin/env bash

cat <<'VERBATIM_SQL'
INSERT INTO t_random VALUES (generate_series(1,9999999999), md5(random()::text));
VERBATIM_SQL
Loop 1./insert.sql: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `VERBATIM_SQL')
执行时,我收到如下警告

#!/usr/bin/env bash

cat <<'VERBATIM_SQL'
INSERT INTO t_random VALUES (generate_series(1,9999999999), md5(random()::text));
VERBATIM_SQL
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')

Shell对于接受什么样的终止条件非常挑剔。它必须与提供的令牌精确匹配。特别是,您应该检查:

  • 终止行没有Windows行结束

  • 终止行上没有尾随空格。(也不得缩进。)


Shell对于他们将接受的终止方式非常挑剔。它必须与提供的令牌精确匹配。特别是,您应该检查:

  • 终止行没有Windows行结束

  • 终止行上没有尾随空格。(也不得缩进。)


这可能会有所帮助:特别是,请确保您的文件没有windows行尾。除非没有一致使用DOS行尾,否则DOS行尾不会导致此问题
VERBATIM\u SQL\r
将是一个有效的分隔符,并在两个位置都使用。哦,虽然如果使用DOS行结尾,很可能(?)最后一行没有像前面几行那样使用CRLF终止。可能是的重复,但我不确定是否可以单方面关闭。这可能会有帮助:特别是,确保您的文件没有windows行尾。DOS行尾不会导致此问题,除非它们没有被一致使用
VERBATIM\u SQL\r
将是一个有效的分隔符,并在两个位置都使用。哦,虽然如果使用DOS行结尾,很可能(?)最后一行没有像前面的行那样使用CRLF终止。可能是的重复,但我不确定是否可以单方面关闭。