在Linux和Shell脚本中,EOF(End Of File)是一个用于标记文本块结束的标识符,常见于输入重定向或多行文本输入的场景。以下是详细说明:
<<
(here document)或 <<<
(here string)结合使用,用于向命令传递多行输入。cat > output.txt << EOF
这是第一行
这是第二行
这是EOF标记前的最后一行
EOF
EOF
之间的内容写入 output.txt
文件。EOF
必须单独一行且顶格写,前后不能有空格。mysql -u user -p << EOF
USE database;
SELECT * FROM table;
EOF
EOF
(如 END
、STOP
),但需前后一致:
bash
cat << END
自定义分隔符
END
bash
cat << 'EOF'
这里的 $PATH 不会被展开
EOF
<<-
并配合制表符(Tab
):
bash
cat <<- EOF
缩进的内容(必须用Tab,空格无效)
EOF
warning: here-document delimited by end-of-file
:通常因未正确闭合EOF(如漏写或拼写错误)。cat
结合:cat << EOF
常用于动态生成配置文件或脚本。bash
read -r -d '' message << EOF
这是一个
多行字符串
EOF
bash
ssh user@host << EOF
echo "远程执行命令"
EOF
EOF 是Shell脚本中标记多行输入结束的灵活工具,通过 <<
重定向实现高效的数据传递。理解其语法细节(如自定义分隔符、变量抑制、缩进处理)能显著提升脚本编写效率。