返回
在 Linux 中编写一个命令行计算器:一个初学者指南
Linux
2024-03-26 18:25:12
在 Linux 中编写一个简单的命令行计算器
前言
在 Linux 操作系统中,编写一个简单的计算器程序是一项既实用又有趣的任务。本指南将一步步指导您使用 Bash 脚本语言创建您自己的命令行计算器,它能够执行基本的数学运算,如加、减、乘和除。
初始化
首先,创建一个名为 calculator.sh 的新 Bash 脚本文件。脚本的开头应初始化三个变量:
result
:存储当前计算结果memory
:存储存储的值operator
:存储当前运算符
#!/bin/bash
result=0
memory=0
operator=
获取操作数
下一步是定义一个函数来获取用户输入的操作数。操作数可以是数字、内存调用 (MR)、内存清除 (MC)、结果清除 (C) 或退出 (X)。
get_operand() {
read -p "Enter operand: " input
case "$input" in
[0-9]*) operand="$input";;
"MR") operand="$result";;
"MC") memory=0; echo "0 -> M";;
"C") result=0; echo "results cleared";;
"X") echo "Good bye."; exit 0;;
*) echo "Invalid input. Please re-enter operand."
esac
}
获取运算符
接下来,定义一个函数来获取用户输入的运算符。运算符可以是加减乘除、存储结果到内存 (MS)、将结果添加到内存 (M+)、调用内存 (MR)、清除内存 (MC)、清除结果 (C) 或退出 (X)。
get_operator() {
read -p "Enter operator: " input
case "$input" in
"+"|"-"|"*"|"/") operator="$input";;
"MS") memory="$result"; echo "$result -> M";;
"M+") memory=$((memory + result));;
"MR") operand="$memory";;
"MC") memory=0; echo "0 -> M";;
"C") result=0; echo "results cleared";;
"X") echo "Good bye."; exit 0;;
*) echo "Invalid operator. Please re-enter operator."
esac
}
主循环
现在,我们可以创建一个主循环,它将持续提示用户输入操作数和运算符,并执行必要的计算。
while true; do
get_operand
get_operator
case "$operator" in
"+") result=$((result + operand));;
"-") result=$((result - operand));;
"*") result=$((result * operand));;
"/")
if [ "$operand" -eq 0 ]; then
echo "Can't divide by zero. Please re-enter divisor."
continue
fi
result=$((result / operand))
;;
esac
echo "$result $operator $operand = $result"
done
完整代码
将上述代码片段组合在一起,得到完整的计算器脚本:
#!/bin/bash
result=0
memory=0
operator=
get_operand() {
read -p "Enter operand: " input
case "$input" in
[0-9]*) operand="$input";;
"MR") operand="$result";;
"MC") memory=0; echo "0 -> M";;
"C") result=0; echo "results cleared";;
"X") echo "Good bye."; exit 0;;
*) echo "Invalid input. Please re-enter operand."
esac
}
get_operator() {
read -p "Enter operator: " input
case "$input" in
"+"|"-"|"*"|"/") operator="$input";;
"MS") memory="$result"; echo "$result -> M";;
"M+") memory=$((memory + result));;
"MR") operand="$memory";;
"MC") memory=0; echo "0 -> M";;
"C") result=0; echo "results cleared";;
"X") echo "Good bye."; exit 0;;
*) echo "Invalid operator. Please re-enter operator."
esac
}
while true; do
get_operand
get_operator
case "$operator" in
"+") result=$((result + operand));;
"-") result=$((result - operand));;
"*") result=$((result * operand));;
"/")
if [ "$operand" -eq 0 ]; then
echo "Can't divide by zero. Please re-enter divisor."
continue
fi
result=$((result / operand))
;;
esac
echo "$result $operator $operand = $result"
done
使用说明
要使用此计算器,只需在 Linux 终端中运行以下命令:
bash calculator.sh
然后,按照屏幕上的说明输入操作数和运算符即可。
自定义
您可以根据自己的需要自定义此脚本。例如,您可以添加其他运算符,如百分比或幂,或者您可以将计算器扩展为处理负数。
常见问题解答
- 问:计算器不能处理负数。如何解决?
答:在变量初始化中将result
初始化为0
,而不是-1
。 - 问:我输入了一个无效的运算符,但计算器没有给我提示。如何修复?
答:在get_operator()
函数中,使用echo
语句打印错误消息。 - 问:如何存储和调用计算结果?
答:使用MS
和MR
运算符存储和调用结果。 - 问:如何清除存储的值?
答:使用MC
运算符清除存储的值。 - 问:如何退出计算器?
答:输入X
退出计算器。