请说明在 Shell 脚本中完成文件读取与写入的具体实现方式,包括常用命令和操作要点。
考察说明
考查Shell脚本中文件I/O的基本操作能力。
回答思路
- 【回答框架 1】读取文件常用 cat、less、more、head、tail、grep、awk、sed 等命令;按行读取可用 while read line 循环,注意与管道结合时子 Shell 环境变量不生效的问题。
- 【回答框架 2】写入文件时,> 覆盖写,>> 追加写;配合 echo、printf 或 heredoc 生成内容;重定向可将标准输出、标准错误分别重定向。
- 【回答框架 3】文件描述符操作:exec 可打开指定文件描述符,用于输入输出;文件锁使用 flock 防止并发写冲突。
- 【回答框架 4】处理大文件时避免使用 cat 整体读入,应按行流式处理;写入前检查目标目录可写性及文件大小。
- 【回答框架 5】基于不同脚本场景选择方案:配置读写用 sed 替换,日志追加用 >>,临时文件用 mktemp。
- 【关键点 1】> 覆盖写,>> 追加写
- 【关键点 2】while read 按行读,注意管道子 Shell 作用域
- 【关键点 3】heredoc 用于多行内容生成
- 【关键点 4】flock 实现文件锁避免并发问题
- 【关键点 5】大文件流式处理避免整读
- 【易错点 1】使用 while read 配合管道时变量赋值无法保留
- 【易错点 2】未检查文件权限而直接读写
- 【易错点 3】忘记重定向标准错误导致错误信息丢失