You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Shell脚本中用cat命令结合here-document创建文件的语法错误?

问题解决:Shell脚本中here-document的语法错误

错误原因

here-document的结束标记(这里的EOF)必须顶格书写,不能有任何前置空格或制表符。你的脚本里结束的EOF前面有缩进,Shell会把它当作文件内容的一部分,无法识别为here-document的结束标记,导致函数的闭合}无法被正确解析,最终触发"end of file unexpected (expecting "}")"错误。

修正后的脚本

#!/bin/bash

create_file () {
    cat > a.txt << EOF
    0 abc def 
    ghi jkl mno
    pqrs tuv wxyz
EOF
}

create_file

补充说明

如果想保留内容的缩进,同时让结束标记的制表符缩进被忽略,可以使用<<-EOF(注意减号),此时结束标记前的**制表符(Tab)**会被Shell忽略,但空格依然不行。示例:

#!/bin/bash

create_file () {
    cat > a.txt <<-EOF
        0 abc def 
        ghi jkl mno
        pqrs tuv wxyz
	EOF # 此处为Tab缩进,不可用空格
}

create_file

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:24:52