面试题答案
一键面试#!/bin/bash
total_count=0
for file in $(ls *.csv); do
while IFS=, read -r name age score; do
if (( age > 30 && score > 80 )); then
((total_count++))
fi
done < "$file"
done
echo "年龄大于30且分数大于80的人数: $total_count"
说明:
- 外层循环:通过
for file in $(ls *.csv); do
遍历当前目录下所有CSV文件。 - 内层循环:利用
while IFS=, read -r name age score; do
逐行读取每个CSV文件的内容,并以逗号作为分隔符解析每行的姓名、年龄和分数。 - 条件判断:通过
if (( age > 30 && score > 80 )); then
判断年龄是否大于30且分数是否大于80,满足条件则计数加1。 - 内存优化:采用逐行读取文件内容的方式,避免一次性加载整个文件到内存,从而减少内存占用。
- 性能优化:这种简单的循环结构在处理大规模文件时相对高效,并且Bash本身在处理文件I/O方面也有一定的优化。