Shell 编程 5 — trap 信号捕获、Expect 自动交互、grep 与正则

概述

Day24 覆盖三大块:trap 信号捕获实现脚本优雅退出、Expect 自动化交互工具(spawn/expect/send)实现密钥批量分发、grep 三种变体及正则表达式深度讲解。

核心内容

trap 信号捕获

  • trap '命令' 信号列表:捕获中断信号执行清理
  • EXIT 信号:脚本退出时自动触发(无论正常/异常)
  • SIGKILL(9) 无法被捕获

Expect 自动化交互

  • 三步模式:spawn(启动进程)→ expect(等待输出)→ send(发送输入)
  • exp_continue:多模式连续匹配
  • interact:将控制权交还用户(半自动化)
  • 批量 SSH 密钥分发:Shell 循环 + Expect 自动化

grep 与正则

  • grep(基础正则)、egrep/grep -E(扩展正则)、fgrep/grep -F(固定字符串)
  • 元字符:.*[]^$\\{n,m\}
  • ERE 扩展:?+|(){}
  • 高效正则原则:锚定边界、使用字符集合、避免过度贪婪

关联