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

Git Bash中HereDoc语法异常?无法处理缩进与终止符

Bash HereDoc <<- 语法误区解析

这不是Bug,是你对<<-的功能理解有误,以下是具体分析和修正方案:

1. <<-的实际作用

<<-在Bash HereDoc中的核心特性只有两个:

  • 允许终止标识符(如示例中的TEXT)前面带有制表符(Tab)(而非空格),让终止符可以和代码缩进对齐,避免语法错误。
  • 会自动移除HereDoc内容每行开头的制表符(Tab),但对空格完全无效。

2. 你的问题拆解

第一个代码片段的问题

cat <<- TEXT
    Hello
    there
  TEXT

终止符TEXT前面是空格而非制表符,<<-只识别终止符前的制表符,因此这个TEXT不会被判定为有效终止标识,导致HereDoc无法正确终止。

第二个代码片段的问题

cat <<- TEXT
    Hello
    there
TEXT

这次终止符TEXT格式有效,但内容行开头的是空格而非制表符,<<-不会处理空格,所以输出会保留这些开头空格,和你看到的结果一致。

3. 符合预期的写法

如果要实现你想要的输出,需要把内容行开头的空格替换成制表符,终止符前也可以用制表符对齐代码:

cat <<- TEXT
	Hello
	there
  TEXT

(注:上述代码中Hello和there前的缩进是制表符,不是空格)

运行后输出就是你预期的结果:

Hello
there

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:20:22