shell 数学运算
数学运算之 expr

expr操作符对照表


比较大小,只能对整数进行比较,需要加空格,linux 保留关键字要转义
num1=30
num2=50
expr $num1 \> $num2

查看上一条命令有没有执行成功
echo $?
返回0 成功,其他失败
小于、小于等于、大于等于
expr $num1 \< $num2
expr $num1 \<= $num2
expr $num1 \>= $num2

运算 加、减、乘、除
# 加
num1=17
num2=5
expr $num1 + $num2 # 减
num3=`expr $num1 + $num2`
echo $num3 expr $num1 - $num2 # 乘
expr $num1 \* $num2
expr $num1 / $num2 # 取余数
expr $num1 % $num2

需要注意事项:
两个小括号的计算方法,要赋值,否则会报错
# 直接输出报错
$(($num1+$num2)) # 需要赋值给一个变量
num3=$(($num1+$num2))
echo $num3 num3=$(($num1*$num2))
echo $num3 num3=$(($num1-$num2))
echo $num3 num3=$(($num1/$num2))
echo $num3

一些操作符在$(()) 不支持, 在比较运算的时候最好使用expr
num1=5
num2=5
num3=$(($num1=$num2))

expr $num1 = $num2

练习例子
提示用户输入一个正整数num,然后计算1+2+3+...+num的值;必须对num是否为正整数做判断,不符合应当运行再次输入
判断是否是一个正整数
思路:
- expr只能对整数进行计算,直接用expr 和一个整数计算获取 $? 的值来判断是否为整数
- 在使用 expr $num1 \> 0 判断是否大于0
# 不是整数使用 expr 进行数学运算会出错
num1=56.58
expr $num1 + 1

sum.sh
#!/bin/bash
#
while true
do
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"
continue
done
执行脚本
sh sum.sh

shell 运算之 bc
bc 介绍:
- bc 是bash内建的运算器,支持浮点数运算
- 内建变量scale可以设置,默认为 0
bc 操作符对照表

交互测试

脚本中使用管道符进行计算
echo "23+33" | bc

保留精度 scale=4; 用分号隔开
echo "scale=4;23.3/3.5" | bc

bc示例脚本
bc.sh
#!/bin/bash
# read -p "num1: " num1
read -p "num2: " num2 #echo "scale=4;$num1/$num2" | bc num3=`echo "scale=4;$num1/$num2" | bc` echo "$num1 / $num2 = $num3"
执行
sh bc.sh

shell 数学运算的更多相关文章
- Linux Shell 数学运算
Linux Shell 数学运算 在Linux中直接使用数学运算符进行数学运算往往得不到我们想要的计算结果.要在Shell中进行数学运算,我们需要借助点小手段.目前,Linux Shell中进行数学运 ...
- shell数学运算
shell的数学运算 branches@ubuntu:~$ var1=$[ * ] branches@ubuntu:~$ echo $var1 branches@ubuntu:~$ var2=$[$v ...
- 7 shell 数学运算
shell中数学运算的易错点: 1.在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储.即使是将整数和小数赋值给变量,它 ...
- shell 数学运算总结
# !/bin/bash ## 整数-算数运算 ### 1. expr r=`expr 4 + 5` ### Tips:1. '4''+''5'三者之间有空白 echo $r; r=`expr 4 \ ...
- 【Linux】shell数学运算
在Bash shell环境中,可以利用let.(())和[]执行基本的算术操作.而在进行高级操作时,expr和bc这两个工具就特别有用 let的使用 Script01.sh #!/bin/bash # ...
- shell编程之数学运算
shell数学运算支持整数运算的四种方法 1.let命令 no1=4; no2=5; let result=no1+no2 2.[]操作符 result=$[ no1 + no2] 3.(())操作符 ...
- shell执行数学运算
整数: expr let $(()) $[] 浮点数: bc 1.使用expr ♦参与运算的成员和运算符之间必须有一个空格: ♦对于那些容易被shell错解的,在它们传入expr命令之前,需要使用sh ...
- Linux shell 变量 数学 运算
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...
- 认真学习shell的第一天-数学运算
shell中的数学运算有三种方式: (1)let,用let的时候,变量名称前不用添加$ (2)[],[]中变量可使用也可不使用$ (3)(())变量名之前必须添加$
随机推荐
- matlab基本函数 randn,rand,orth
一起来学演化计算-matlab基本函数randn, rand, orth 觉得有用的话,欢迎一起讨论相互学习~Follow Me randn X = randn 随机从正态分布中选一个数作为结果 X ...
- LwIP应用开发笔记之一:LwIP无操作系统基本移植
现在,TCP/IP协议的应用无处不在.随着物联网的火爆,嵌入式领域使用TCP/IP协议进行通讯也越来越广泛.在我们的相关产品中,也都有应用,所以我们结合应用实际对相关应用作相应的总结. 1.技术准备 ...
- SQL Delta实用案例介绍,很好的东西,帮了我不少忙
SQL Delta实用案例介绍 概述 本篇文章主要介绍SQL DELTA的简单使用.为了能够更加明了的说明其功能,本文将通过实际项目中的案例加以介绍. 主要容 SQL DELTA 简介 ...
- CF1227D Optimal Subsequences
思路: 首先对于单个查询(k, p)来说,答案一定是a数组中的前k大数.如果第k大的数字有多个怎么办?取索引最小的若干个.所以我们只需对a数组按照值降序,索引升序排序即可. 多个查询怎么办?离线处理. ...
- js 上传txt格式文件
判断文件是否为.txt格式: $(".delbao .file").on("change",function(){ var acceptType = $(thi ...
- 对象的加减乘除运算demo
1 class Square: 2 def __init__(self, wh): #因为是正方形, 只取一条边的长度 3 if isinstance(wh,(int,float)): 4 self. ...
- 莫比乌斯反演求LCM的另一种做法
一个经典问题 求 \[ \sum_{k=1}^n\mathbb{lcm}(k,n) \] 一般的做法是使用\(\varphi(n)\)函数. 不经典的做法 \[ \begin{align*} \sum ...
- php面相对象基本概念,基本形式,传值
面向对象基本概念 面向对象三大特性:封装 继承 多态 类与对象 类:是用于描述“某一些具有共同特征”的物体的概念,是某一类物体的总称. 通常,一个类所具有的共同特征包括2大方面的信息: 外观,形状 ...
- RestTemplate对象的使用
- MySQL面试 - 读写分离
MySQL面试 - 读写分离 面试题 你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 面试官心理分析 ...