博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编程系列5--数学运算
阅读量:6759 次
发布时间:2019-06-26

本文共 3905 字,大约阅读时间需要 13 分钟。

shell编程系列5--数学运算方法1 expr $num1 operator $num2方法2 $(($num1 operator $num2))expr操作符对照表1 操作符        含义num1 | num2    num1不为空且非0,返回num1;否则返回num2num1 & num2    num1不为空且非0,返回num1;否则返回0num1 < num2    num1小于num2,返回1;否则返回0num1 <= num2    num1小于等于num2,返回1;否则返回0num1 = num2    num1等于num2,返回1;否则返回0num1 != num2    num1不等于num2,返回1;否则返回0num1 > num2    num1大于num2,返回1;否则返回0num1 >= num2    num1大于等于num2,返回1;否则返回0expr操作符对照表2操作符        含义num1 + num2    求和num1 - num2    求差num1 * num2    求积num1 / num2    求商num1 % num2    求余数bash数学运算之expr:# 比较大小,只能对整数进行比较[root@es01 ~]# num1=30[root@es01 ~]# num2=50# 错误:没有加空格[root@es01 ~]# expr $num1>$num2[root@es01 ~]# echo $?0[root@es01 ~]# echo $num250# 错误:没有转义[root@es01 ~]# expr $num1 > $num2# 正确写法[root@es01 ~]# expr $num1 \> $num20[root@es01 ~]# num1=100[root@es01 ~]# echo $num1100[root@es01 ~]# expr $num1 \> $num21# 小于、小于等于、大于等于[root@es01 ~]# expr $num1 \< $num20[root@es01 ~]# expr $num1 \<= $num20[root@es01 ~]# expr $num1 \>= $num21# 运算 加、减、乘、除[root@es01 ~]# num1=17[root@es01 ~]# num2=5[root@es01 ~]# expr $num1 + $num222[root@es01 ~]# num3=`expr $num1 + $num2`[root@es01 ~]# echo $num322[root@es01 ~]# expr $num1 - $num212[root@es01 ~]# expr $num1 \* $num285[root@es01 ~]# expr $num1 / $num23# 取余数[root@es01 ~]# expr $num1 % $num22# 两个小括号的计算方法,要赋值,否则会报错[root@es01 ~]# $(($num1+$num2))-bash: 22: command not found[root@es01 ~]# num3=$(($num1+$num2))[root@es01 ~]# echo $num322[root@es01 ~]# num3=$(($num1*$num2))[root@es01 ~]# echo $num385[root@es01 ~]# num3=$(($num1-$num2))[root@es01 ~]# echo $num312[root@es01 ~]# num3=$(($num1/$num2))[root@es01 ~]# echo $num33# 部分支持,= 不支持[root@es01 ~]# num3=$(($num1>$num2))[root@es01 ~]# echo $num31[root@es01 ~]# num3=$(($num1<$num2))[root@es01 ~]# echo $num30[root@es01 ~]# num3=$(($num1=$num2))-bash: 17=5: attempted assignment to non-variable (error token is "=5")在比较运算的时候最好使用expr练习例子:提示用户输入一个正整数num,然后计算1+2+3+...+num的值;必须对num是否为正整数做判断,不符合应当运行再次输入# 判断是否大于0[root@es01 ~]# num1=56[root@es01 ~]# expr $num1 \> 01# expr只能对整数进行计算,直接用expr 和一个整数计算获取 $? 的值来判断是否为整数[root@es01 ~]# num1=56.58[root@es01 ~]# expr $num1 \> 01[root@es01 ~]# expr $num1 + 1expr: non-integer argument[root@es01 ~]# echo $?2[root@es01 ~]# num1=90[root@es01 ~]# expr $num1 + 191[root@es01 ~]# echo $?0# 具体脚本# vim sum.sh#!/bin/bash#while truedo        read -p "please input a positive number: " num        # 判断数是否是整数        expr $num + 1 &> /dev/null        if [ $? -eq 0 ];then                # 判断这个整数是否大于0,大于0返回1                if [ `expr $num \> 0` -eq 1 ];then                        #echo "yes,positive number"                        # $sum没有赋值,默认为0                        for((i=1;i<=$num;i++))                        do                                sum=`expr $sum + $i`                        done                        echo "1+2+3+...+$num = $sum"                        # 执行计算需要退出                        exit                fi        fi        echo "error,input enlegal"        continuedone# bc介绍bc是bash内建的运算器,支持浮点数运算内建变量scale可以设置,默认为0bc操作符对照表操作符        含义num1 + num2    求和num1 - num2    求差num1 * num2    求积num1 / num2    求商num1 % num2    求余num1 ^ num2    指数运算centos7默认没有安装bc命令yum install -y bc# 交互模式[root@es01 shell]# bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'. 23 + 52823 - 81523 * 613823 / 5423 % 53# 小数点保留2位scale=223 / 54.60# 小数点保留6位scale=623 / 73.285714# 脚本中使用管道符进行计算[root@es01 shell]# echo "23+33" | bc56[root@es01 shell]# echo "23.3+66" | bc89.3# 保留精度 scale=4; 用分号隔开[root@es01 shell]# echo "scale=4;23.3/3.5" | bc6.6571# bc示例脚本[root@es01 shell]# cat bc.sh #!/bin/bash#read -p "num1: " num1read -p "num2: " num2#echo "scale=4;$num1/$num2" | bcnum3=`echo "scale=4;$num1/$num2" | bc`echo "$num1 / $num2 = $num3"[root@es01 shell]# sh bc.sh num1: 5.6num2: 35.6 / 3 = 1.8666

 

转载于:https://www.cnblogs.com/reblue520/p/10919150.html

你可能感兴趣的文章
020 RDD的理解
查看>>
Flask 2 程序的基本结构1
查看>>
sass的学习笔记
查看>>
uploadify上传带参数及接收参数的方法
查看>>
Linux的中断和系统调用 & esp、eip等寄存器
查看>>
kettle的jndi的使用
查看>>
微信小程序把玩(九)scroll-view组件
查看>>
android BroadCastRecevier笔记
查看>>
HEXO+Github,搭建属于自己的博客
查看>>
使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
查看>>
Memcached、Redis OR Tair
查看>>
springcloud Ribbon自定义负载均衡插件
查看>>
Plupload上传插件中文帮助文档
查看>>
HDU2089 不要62 BZOJ1026: [SCOI2009]windy数 [数位DP]
查看>>
MySQL查询提示
查看>>
Oracle中如何判断字符串是否全为数字
查看>>
《JavaScript高级程序设计》笔记:在HTML中使用Javascript(二)
查看>>
asp.net 实现pdf、swf等文档的浏览
查看>>
STM32学习之路-SysTick的应用(时间延迟)
查看>>
/etc/rc.d/rc.local linux启动自动开启某些服务(转)
查看>>