如何使用cat
带有此处文档的 shell 脚本命令来创建文件”
#!/bin/bash
create_file () {
cat > a.txt << EOF
0 abc def
ghi jkl mno
pqrs tuv wxyz
EOF
}
create_file
错误
Syntax error: end of file unexpected (expecting "}")
如何使用cat
带有此处文档的 shell 脚本命令来创建文件”
#!/bin/bash
create_file () {
cat > a.txt << EOF
0 abc def
ghi jkl mno
pqrs tuv wxyz
EOF
}
create_file
错误
Syntax error: end of file unexpected (expecting "}")
删除打开 EOF 后的缩进:
Bash 会查找与您开头相同的“分隔符”。您以“EOF”开头,但在使用缩进时以“____EOF”结尾,因此无法匹配结束分隔符
如果要为结果文本添加间距,请为文本添加缩进,但将 EOF 保留在行首:
结束此处文档的行必须与您在此处文档开头指定的字符串完全匹配。因此,您可以清晰地缩进代码,如下所示:
-
在后面添加<<
以告诉 bash 忽略此处文档中的前导制表符(并且仅忽略制表符,而不是所有空格):因此,上面带有重要空白的文档说明如下:
它将创建这个没有前导空格的文件:
如果您希望输出文件中以空格开头,则将它们放在此处文档中的任何制表符之后:
如果您希望输出文件中使用前导制表符,那么请不要添加
-
到 here-doc 开始构造中<<
,而是使用制表符和/或其他空格缩进 here-doc 内容,就像您希望它在输出中显示的那样:如果您复制/粘贴上述内容,并且它输出一个带有前导空格的文件,那是因为您忘记将此站点在 here-doc 中显示的空白转换为实际代码的制表符。