MST
星途 面试题库

面试题:Bash复杂日期时间任务处理

编写一个Bash脚本,能够统计过去一周内每天特定服务(假设服务日志文件命名格式为service_YYYYMMDD.log)的日志行数,并以表格形式输出,表头为日期和日志行数。同时,要求脚本能够处理日志文件可能不存在的情况,并且在处理过程中尽可能高效。
26.2万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 获取过去一周的日期
dates=()
for ((i = 0; i < 7; i++)); do
    dates+=($(date -d "-${i} day" +%Y%m%d))
done

# 输出表头
echo "| 日期 | 日志行数 |"
echo "| ---- | ---- |"

# 统计每天的日志行数
for date in "${dates[@]}"; do
    log_file="service_${date}.log"
    if [ -f "$log_file" ]; then
        line_count=$(wc -l < "$log_file")
    else
        line_count=0
    fi
    echo "| ${date} | ${line_count} |"
done