MST

星途 面试题库

面试题:Bash函数与复杂脚本结构结合应用

假设你有一个文本文件,每行包含一个数字和一个运算符(+、-、*、/),例如:'5 + 3'。编写一个Bash脚本,通过定义函数来解析每一行内容,根据运算符进行相应运算,并将结果输出。要求函数具备良好的模块化和错误处理机制,能够处理除零等异常情况,并在脚本中正确调用函数完成整个文件的处理。
42.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 定义运算函数
calculate() {
    local num1=$1
    local operator=$2
    local num2=$3

    case $operator in
        +) result=$((num1 + num2)) ;;
        -) result=$((num1 - num2)) ;;
        \*) result=$((num1 * num2)) ;;
        /) 
            if [ $num2 -eq 0 ]; then
                echo "Error: Division by zero"
                return 1
            fi
            result=$((num1 / num2)) ;;
        *) 
            echo "Error: Unknown operator $operator"
            return 1
    esac

    echo $result
    return 0
}

# 检查文件是否提供
if [ $# -ne 1 ]; then
    echo "Usage: $0 <filename>"
    exit 1
fi

filename=$1

# 逐行读取文件并处理
while read -r line; do
    num1=$(echo $line | awk '{print $1}')
    operator=$(echo $line | awk '{print $2}')
    num2=$(echo $line | awk '{print $3}')

    calculate $num1 $operator $num2
done < $filename