用shell脚本写的一个简单的计算器

时间:2022-12-06 14:55:07

该文是根据慕课网tony 老师的视频所记的笔记

#!/bin/bash
#该脚本是写一个简单的计算器

read -p "请输入第一个数字" x
read -p "请输入第二个数字" y
read -p "请输入运算符号" f

#最外层判断,判断输入的是否为空
# -n 判断 是否为非空
# -a 多重条件判断 与
if [ -n "$x" -a -n "$y" -a -n "$f" ]
        then
# 下面这个表达式用于判断输入的两个字符是否完全为数字,反引号 和 $()为同一个作用,将系统命令的值赋给变量,原理为,输出变量x的值,并利用管道符,将该值进行字符串替换, sed "s/旧字符串/新字符串/g",末尾g表示将指定范围内的所有旧字符串都替换,所以虽然[0-9]表示匹配一个字符,加了g以后,会替换所有字符。
                test1=`echo "$x" | sed "s/[0-9]//g"`
                test2=$(echo "$y" | sed "s/[0-9]//g")
#中间的判断,判断输入的两个值是否为数字
            if [ -z "$test1" -a -z "$test2" ]
                    then
# 最内层判断,判断是什么运算符号
                            if [ "$f" == "+" ]
                                    then
                                    echo "$x和$y的和是"$[$x+$y]
                            elif [ "$f" == "-" ]
                                    then
                                    echo "$x和$y的差是"$[$x-$y]
                            elif [ "$f" == "*" ]
                                    then
                                    echo "$x和$y的积是"$[$x*$y]
                            elif [ "$f" == "/" ]
                                    then
                                        echo "$x和$y的商是"$[$x/$y]
                            fi
            else
                    echo "您输入的不是数字,重新执行脚本"
                    bash jisuanqi.sh
                    exit 2
            fi
    else
            echo "您没有输入数字,重新执行脚本"
            bash jisuanqi.sh
            exit 1
fi