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
相关产品推荐
相关产品推荐

