MST

星途 面试题库

面试题:Bash脚本复杂代码设计模式与性能优化

假设有一个大的文本文件,每行是一个数字。编写一个Bash脚本,计算这些数字的总和、平均值、最大值和最小值。在实现过程中,要尽可能优化脚本性能,避免不必要的内存开销,并且采用模块化设计,方便后续扩展和维护。
50.2万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 模块:计算总和
calculate_sum() {
    local sum=0
    while read -r num; do
        ((sum += num))
    done < "$1"
    echo "$sum"
}

# 模块:计算平均值
calculate_average() {
    local sum=$(calculate_sum "$1")
    local count=$(wc -l < "$1")
    if ((count > 0)); then
        bc -l <<< "scale=2; $sum / $count"
    else
        echo "0.00"
    fi
}

# 模块:计算最大值
calculate_max() {
    local max=0
    local first=true
    while read -r num; do
        if $first; then
            max=$num
            first=false
        else
            ((num > max)) && max=$num
        fi
    done < "$1"
    echo "$max"
}

# 模块:计算最小值
calculate_min() {
    local min=0
    local first=true
    while read -r num; do
        if $first; then
            min=$num
            first=false
        else
            ((num < min)) && min=$num
        fi
    done < "$1"
    echo "$min"
}

# 主程序
if [ $# -ne 1 ]; then
    echo "Usage: $0 <file_name>"
    exit 1
fi

file="$1"
sum=$(calculate_sum "$file")
average=$(calculate_average "$file")
max=$(calculate_max "$file")
min=$(calculate_min "$file")

echo "总和: $sum"
echo "平均值: $average"
echo "最大值: $max"
echo "最小值: $min"