1、语法格式:

  第一种:expr $num1 operator $num2

  第二种:$(($num1 operator $num2))

2、expr 操作符:

注意:这里比较为true,返回 1。只支持整数。

3、实际使用,比较时必须有空格

在实际使用过程中,类似于“|” 这样的管道符号要进行转义,如下:

  num1=100

  num2=200  

  expr $num1 \| $num2

  expr $num1 \& $num2

  expr $num1 \< $num2

  expr $num1 \<= $num2

  expr $num1 \> $num2

  expr $num1 \>= $num2

  expr $num1 = $num2

  expr $num1 != $num2

   expr $num1 + $num2

  expr $num1 - $num2

  expr $num1 \* $num2

  expr $num1 / $num2

  expr $num1 % $num2

4、举例

  $ num1=30

  $ num2=50

  $ expr $num1 \| $num2

  打印出:30

  

  $ expr $num1 + $num2

  打印出:80

  $ num3=`expr $num1 \* $num2`     // 命令替换的形式

  $ echo $num3 

  打印出:1500

  

  对于 $(()) 这种操作,需要赋给一个值,并且里面的符号不用转义。  expr 会直接当成一个命令进行操作

  $ num3=$(($num1*$num2))

  $ echo $num3 

  打印出:1500

  注意:$(()) 进行运算只能进行 加、减、乘、除、求余 运算。

5、大练习

  提示用户输入一个正整数,然后计算 1+2+3+...+num 的值,并打印。 必须对num进行正整数判断,不符合要求,则给出提示,然后重新输入。

#!/bin/bash

#计算 +++...+num 的和,并且num 必须是正整数

while true
do
read -p "请输入一个正整数:" num # 判断是不是整数,如果不是整数,num + 运算会报错,$? 返回值就为2
expr $num + &> /dev/null if [ $? -eq ]; then
if [ `expr $num \> ` -eq ]; then
for((i=; i<=$num; i++))
do
sum=`expr $sum + $i`
done
echo "1+2+...+$num = $sum"
exit
fi
echo "输入的参数不是正整数"
else
echo "输入的参数不是一个整数"
fi
continue
done

  

Shell 使用 expr 进行数学运算的更多相关文章

  1. shell脚本中的数学运算

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法.以后用到的时候能够来看,呵呵 1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1 ...

  2. 认真学习shell的第一天-数学运算

    shell中的数学运算有三种方式: (1)let,用let的时候,变量名称前不用添加$ (2)[],[]中变量可使用也可不使用$ (3)(())变量名之前必须添加$

  3. shell编程:expr的数学运算

    运算符两种方式 方式一:expr $num1 operator $num2 方式二:$(($num1 operator $num2)) (方式二在运算符“=”时候会出错) 1+2.sh 这个代码有点问 ...

  4. linux学习(八)Shell中变量的数学运算

    目录 常见的运算符 expr命令 @(Shell中变量的数学运算) 常见的运算符 环境变量 说明 + 加 - 减 * 乘 / 除 % 取模 因为Shell中将*作为通配符使用, expr命令 expr ...

  5. Shell bc命令进行数学运算

    通常情况做简单的运算,很多命令里面都是支持的.比如for, awk等. #!/bin/bash num= #for循环这里的数字也是运算 #也可以使用 #也可以使用数组 ;i<=;++i)) d ...

  6. shell中的数学运算

    shell中要进行数学运算通常有3中方法: expr命令 比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如: ...

  7. shell 数学运算

    数学运算之 expr expr操作符对照表 比较大小,只能对整数进行比较,需要加空格,linux 保留关键字要转义 num1=30 num2=50 expr $num1 \> $num2 查看上 ...

  8. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  9. shell编程之数学运算

    shell数学运算支持整数运算的四种方法 1.let命令 no1=4; no2=5; let result=no1+no2 2.[]操作符 result=$[ no1 + no2] 3.(())操作符 ...

随机推荐

  1. Python交互K线工具 K线核心功能+指标切换

    Python交互K线工具 K线核心功能+指标切换 aiqtt团队量化研究,用vn.py回测和研究策略.基于vnpy开源代码,刚开始接触pyqt,开发界面还是很痛苦,找了很多案例参考,但并不能完全满足我 ...

  2. power shell 脚本了解

    1. https://www.cnblogs.com/xianglongsdu/p/5832984.html 2.https://www.cnblogs.com/lsdb/p/9531338.html ...

  3. mybatis 动态sql和参数

    mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...

  4. 使用XStream解析复杂XML并插入数据库(一)

    环境: Springboot+mysql 我只想说jpa真的超级好用,准备深入研究一下~ 导入依赖: <dependency> <groupId>org.projectlomb ...

  5. 在python3里面使用ueditor(基于adminx)

    第一步,下载ueditor,在git上下载 直接download : https://github.com/twz915/DjangoUeditor3/ 然后放到任何一个文件夹里面 配置setting ...

  6. vue1.0配置路由

    1,//创建 router 实例 var router = new VueRouter() 2,//components下新建home.vue组件,并在app.vue中引入模块: import hom ...

  7. java 动态增/减集合元素

    1. 简介 有时候需要在集合遍历过程中进行增/删,下面介绍几种正确的操作方式. 2. 示例 例如有如下集合[1, 2, 2, 3, 5],需要删除被2整除的元素. import java.util.* ...

  8. springcloud-zuul路由网关

    路由网关(zuul) 在微服务架构中,需要多个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能 路由.配置管理等,由这个基础组件相互协作,共同组建了一个简单的微服务系统.一个简 ...

  9. Redhat 6.3上安装libssh

    遇到了很多坑,决定记录下来,有些经验还是很有帮助的. 最重要的一条就是:安装rpm包,总是比编译源码安装(make&make install)更快.记住两个rpm网站:https://pkgs ...

  10. easyui tagbox 自动触发回车事件

    新版本的 easyui 加入了 tagbox 控件,允许用户通过回车分隔的方式输入多项数据.但这个控件有一些不便,就是每输入完一项必须按回车键确认,用户很容易在输入完最后一项后忘记按回车就直接提交表单 ...