用途:整理 Bash 5.1(2020 年 12 月发布)的新特性与改进,供编写现代 Shell 脚本时参考。
主要能力:
- 新增特殊变量 EPOCHSECONDS(秒级 Unix 时间戳)与 EPOCHREALTIME(微秒精度时间戳),可用于性能测量、高精度日志时间戳,避免调用外部 date 命令。
- SRANDOM 变量提供加密强度随机数,依赖系统 getrandom() 或 getentropy() 支持,不可用时需回退处理。
- {varname} 重定向语法:可将文件描述符分配给变量,如 exec {fd}< input.txt,自动分配 FD 避免冲突,用 exec {fd}<&- 关闭,提升可读性与可维护性。
- 数组增强:改进关联数组处理与展开,支持更复杂的配置解析;改进嵌套数组结构处理。
- Readline 8.1 集成:可通过 ~/.inputrc 配置补全忽略大小写、彩色补全前缀等;增强历史搜索与 bind 绑定。
- 信号处理改进:子 shell 与进程替换中的信号传播更可靠,trap 清理逻辑更稳定。
- 修复子 shell 变量继承、glob 模式匹配边界情况等缺陷,并优化循环变量展开、数组操作与内存占用。
使用方式:脚本中可直接引用上述变量与语法;建议先用 BASH_VERSINFO 检查版本(主版本≥5 且次版本≥1)再使用 5.1 特性,否则回退到 date +%s 等旧方式。
适用场景:需要高精度计时、安全随机数、多文件句柄管理、复杂配置解析或跨版本兼容的 Shell 脚本开发。
限制:SRANDOM 并非所有系统可用;从 Bash 5.0 升级时多数脚本兼容,但部分展开边界行为有变化;面向旧版本时需做存在性检查。资料未提供具体收费、平台或效果信息。