Shell面试题更新 2026-08-05

在编写 Shell 脚本时,有哪些方式可以利用 here document 来完成多行文本的传递或输入?

技术原理Shell

考察说明

考查对 here document 语法、用途及常见用法的理解

回答思路

  1. 【回答框架 1】here document 是一种输入重定向方式,使用 << 后跟一个分隔符,将随后直到独立分隔符行的所有内容作为标准输入传给命令。常见格式为 command <<EOF,内容行,EOF。
  2. 【回答框架 2】典型用途包括将多行文本作为输入传给命令,如 cat、ftp、mysql 等;也可以用于给变量赋值,使用 read 配合 here document。分隔符可自定义,但常用 EOF 或 DELIMITER,建议使用带引号的分隔符如 'EOF' 来禁止变量扩展与命令替换。
  3. 【回答框架 3】here document 支持在内容中使用变量、命令替换,若需限制扩展,可使用 <<'EOF' 或 <<\EOF。与之相关的 here string(<<<)只能用于单行输入,与 here document 的多行能力不同。
  4. 【回答框架 4】实际应用中,可以使用 here document 自动生成配置文件或交互式命令的应答,减少手动输入。注意分隔符不能与内容中的行相同,且结束符必须顶格。
  5. 【关键点 1】here document 用 << 加定界符实现多行输入,内容直到独立定界符行结束。
  6. 【关键点 2】分隔符加引号可禁止变量扩展和命令替换,以双引号也可保留部分扩展。
  7. 【关键点 3】here document 常用于批量输入、自动应答或生成文件内容。
  8. 【易错点 1】忘记结束定界符必须单独占行且不能有额外空格。
  9. 【易错点 2】在内容中使用与定界符相同的字符串会导致提前结束。