sgo*_*n00 1 bash here-document
我确实用谷歌搜索过这个话题,所有结果都在谈论<<EOF。但是我看到脚本使用<<-EOF,但我无法通过谷歌搜索找到任何内容。因此,bash 脚本<<-EOF和<<EOFbash 脚本之间有什么不同?非常感谢。
<<-EOF将忽略您的 heredoc 中的前导标签,而<<EOF不会。因此:
cat <<EOF
Line 1
Line 2
EOF
Run Code Online (Sandbox Code Playgroud)
会产生
Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)
尽管
cat <<-EOF
Line 1
Line 2
EOF
Run Code Online (Sandbox Code Playgroud)
产生
Line 1
Line 2
Run Code Online (Sandbox Code Playgroud)
如果您使用<<-EOF,我推荐 Bourne Shell 的手册页:
但是,如果连字符 (-) 附加到 <<:
在读取 shell 输入之前(但在 word 上完成参数和命令替换之后),从 word 中删除前导制表符;
在读取 shell 输入时以及在将每一行与单词进行比较之前,先行制表符会从 shell 输入中去除;和
shell 输入被读取到与结果单词字面匹配的第一行,或者到 EOF。
因此<<-允许缩进此处文档的内容以获得更好的可读性。