简单的一个加减乘除计算器实现

本文介绍了一个使用Shell脚本实现的基本计算器程序。该程序通过读取用户输入的数值和操作符来执行加、减、乘、除等基本算术运算,并通过awk命令进行计算结果的输出。此外,还提供了一个菜单驱动的版本,增加了用户体验。
不算好的方法:
#!/bin/sh
 echo "input num1:" 
 read a 
 echo "input num2:" 
 read b 
 echo "input operator:" 
 read o 
 case $o in
 +)
        awk 'BEGIN{printf "\t" "'$a'+'$b'=%.2f\n",'$a'+'$b'}'
        #result=$((a+b))
 ;;
 -)
        awk 'BEGIN{printf "\t" "'$a'-'$b' =%.2f\n", '$a'-'$b'}'
        #result=$((a-b))
 ;;
 /)if [ $b -eq 0 ]
          then
          echo "错误提示:除数不能为零!!!"
          else
                awk 'BEGIN{printf "\t" "'$a'/'$b' =%.2f\n", '$a'/'$b'}'
                fi
                ;;
 \*)
        awk 'BEGIN{printf "\t" "'$a'*'$b' =%.2f\n", '$a'*'$b'}'
        #result=$((a*b))
 ;;
 *)
        echo "输入格式错误"
 esac


较好的方法:
#!/bin/sh

 ps3="select your will exec Menu:"
 select i in "运算"
 do
        case $i in 
 运算)
        echo "请输入运算符1:\c"
        read a 
        echo "\n"
        echo "请输入运算符2:\c"
        read b
        echo "\n"
        ac=`echo $a|awk '{if($1 !~/[a-zA-Z]/) print}'` 
        bc=`echo $b|awk '{if($1 !~/[a-zA-Z]/) print}'`
    #ccc=`echo $a $b|awk '{if("$a" ~/[0-9]/ || "$b" ~/[0-9]/) print}'`
        #echo $a $b|awk '{if("$a" !~/[0-9]/ && "$b" !~/[0-9]/) print }'
 if [ "$ac" = "$a" -a "$bc" = "$b" ]
  then
                #echo "运算符只能为数字..."
                #break
                #else
                echo "提示:请选择下列序号进行运算,退出请输入错误格式!\n"
        
 select i in "+" "-" "*" "/" 
 do
        case $i in
 +)
        awk 'BEGIN {printf "\t" "'$a'+'$b' =%.2f\n", '$a'+'$b'}'
 ;;
 -)
                awk 'BEGIN{printf "\t" "'$a'-'$b' =%.2f\n", '$a'-'$b'}'
 ;;

 /)if [ $b -eq 0 ]
          then
          echo "错误提示:除数不能为零!!!a\n"
          else
                awk 'BEGIN{printf "\t" "'$a'/'$b' =%.2f\n", '$a'/'$b'}'
                fi
                ;;
 \*)
        awk 'BEGIN{printf "\t" "'$a'*'$b' =%.2f\n", '$a'*'$b'}'
        ;;
   *)
   echo "提示:输入1继续运算,否则退出。。。"
   break
   ;;
  esac
  done
  else
        echo "提示:运算符错误,请输入数字\n"
        continue
  fi
  ;; 
  *)
  echo "-----------------------------退出---------------------------"
  exit 0
  ;;
  esac
 done

可参考的实现方法3:
#!/bin/sh
  case $2 in  
   +)
           awk 'BEGIN{printf "\t" "'$1'+'$3'=%.2f\n",'$1'+'$3'}'    
  ;;
  esac
注:这个方法就是在执行的时候输入参数

 

转载于:https://www.cnblogs.com/fengkui/p/6122394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值