Linux Bash脚本警告-此处文档由文件结尾分隔
我有一个如下所示的sql文件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
#!/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行结束
- 终止行上没有尾随空格。(也不得缩进。)
- 终止行没有Windows行结束
- 终止行上没有尾随空格。(也不得缩进。)
VERBATIM\u SQL\r
将是一个有效的分隔符,并在两个位置都使用。哦,虽然如果使用DOS行结尾,很可能(?)最后一行没有像前面几行那样使用CRLF终止。可能是的重复,但我不确定是否可以单方面关闭。这可能会有帮助:特别是,确保您的文件没有windows行尾。DOS行尾不会导致此问题,除非它们没有被一致使用VERBATIM\u SQL\r
将是一个有效的分隔符,并在两个位置都使用。哦,虽然如果使用DOS行结尾,很可能(?)最后一行没有像前面的行那样使用CRLF终止。可能是的重复,但我不确定是否可以单方面关闭。