如何简化无awk的Bash覆盖率判断脚本?适配Alpine基础镜像
简化后的测试覆盖率判断Bash脚本
核心思路
- 用Bash内置的字符串处理和整数算术扩展替代
awk,不依赖外部工具 - 将小数形式的覆盖率(如
0.92)转换为整数百分比(92),直接与阈值(如90)做整数比较,规避浮点运算问题 - 合并重复逻辑,统一处理覆盖率值的转换与判断
简化脚本示例
#!/bin/bash # 配置参数 coverage_stat="0.92" # 示例覆盖率值(小数形式) cutoff_percent=90 # 达标阈值(整数百分比) # 将小数覆盖率转换为整数百分比 # 处理逻辑:移除小数点后取对应位数,兼容0.xx和1.00格式 coverage_int=${coverage_stat//./} if [[ ${#coverage_int} -gt 2 ]]; then coverage_int=${coverage_int:0:3} else coverage_int=${coverage_int:0:2} fi # 执行判断并输出结果 if [[ $coverage_int -ge $cutoff_percent ]]; then echo "测试覆盖率达标:${coverage_stat}(${coverage_int}%)≥ ${cutoff_percent}%" exit 0 else echo "测试覆盖率未达标:${coverage_stat}(${coverage_int}%)< ${cutoff_percent}%" exit 1 fi
适配Alpine Linux说明
- 脚本仅依赖Bash内置命令,Alpine默认安装的Bash(或改用
#!/bin/sh适配ash)完全支持这些语法 - 无需额外安装任何软件包,符合轻量容器镜像的要求
关键优化点
- 移除原脚本中依赖
awk的浮点比较逻辑,改用纯Bash字符串处理和整数运算 - 统一覆盖率值的转换逻辑,消除代码重复
- 增加对
1.00(100%覆盖率)场景的兼容处理
内容的提问来源于stack exchange,提问作者Preet Sangha
相关产品推荐
相关产品推荐

