码迷,mamicode.com
首页 > 系统相关 > 详细

用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1.

时间:2018-02-22 19:36:20      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:.sh   浮点   分隔符   应该   计算   bar   整数   ace   特殊   

用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1.sh 1 + 2

#!/bin/bash
if [ $# -ne 3 ]
then
   echo "参数个数应该为3,例如:$0 1 + 2"
   echo "当使用乘法时,需要加上脱义符号,例如:$0 1 \* 2"
   exit 1;
fi
num1=`echo $1|sed 's/[0-9.]//g'`
if [ -n "$num1" ]
then
    echo "$1不是数字"
    exit 1
fi
num3=`echo $3|sed 's/[0-9.]//g'`
if [ -n "$num3" ]
then
    echo "$3不是数字"
    exit 1
fi
case $2 in
   +)
    echo "scale=2;$1+$3" | bc
    ;;
   -)
    echo "scale=2;$1-$3" | bc
    ;;
   \*)
    echo "scale=2;$1*$3" | bc
    ;;
   /)
    echo "scale=2;$1/$3" | bc
    ;;
   *)
    echo "$2 不是运算符" 
    ;;
esac

解析:

$# 参数的数量

$0 当前执行的进程名


num1 -ne  num2 不等于 [ 3 -ne $mynum ]


-n string 如果 string长度非零,则为真 [ -n "$myvar" ]


sed   '【n1,n2】【[0-9a-zA-Z]】s/源字符串/目标字符串/g' filename
         这里n1,n2是指区间n1到n2行,“s”就是替换的命令,“g”为本行中全局替换,如果不加‘g’,则只替换该行中出现的第一   个。除了可以使用“/”作为分隔符外,还可以使用其他特殊字符如“#”或者“@”。


bc命令是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算。参数scale=2是将bc输出结果的小数位设置为2位


使用case,如果$2为+,输出echo "scale=2;$1+$3" | bc

依次论推

如果$2不是加减乘除任一情况,则输出echo "$2 不是运算符"

用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1.

标签:.sh   浮点   分隔符   应该   计算   bar   整数   ace   特殊   

原文地址:http://blog.51cto.com/12129628/2072173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!