shell 脚本出错
line 6: warning: here-document at line 2 delimited by end-of-file (wanted `_EOF_')
Run Code Online (Sandbox Code Playgroud)
这是代码:
#!/bin/bash
cat <<- _EOF_
test:
1. test
0. test test
_EOF_
Run Code Online (Sandbox Code Playgroud)
但这是对的。
#!/bin/bash
cat <<- _EOF_
test:
1. test
0. test test
_EOF_
Run Code Online (Sandbox Code Playgroud)
来自 Bash 手册:
如果重定向运算符为 <<-,则所有前导制表符将从输入行和包含定界符的行中去除。这允许 shell 脚本中的此处文档以自然的方式缩进。
也就是说,如果您使用空格而不是制表符缩进这些行,则会失败。
另一个看不见的问题是终止词必须单独出现在该行上,周围没有任何内容。唯一的例外是前导制表符,如果您使用<<-而不是<<. 因此,行尾部空格_EOF_可以做到这一点。
顺便说一句,测试确实表明 Bash 可以容忍<<-和 终止词之间有空格,但 Bash 手册中并未显示出允许的情况。这可能是一个可移植性问题。