博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Linux基础------Shell数值计算的几种方法
阅读量:4580 次
发布时间:2019-06-09

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

Linux基础------Shell数值计算的几种方法

原文:http://blog.csdn.net/fu_wayne/article/details/21620639

在Linux下总会遇到数值计算问题,由于Linux下变量都属于弱变量,没有变量类型的概念(貌似脚本语言都是这样)。

例如定义一个变量:x=1

此时的变量x默认是一个字符串,即使看着像一个数字,所以当尝试用如下的方法去进行计算的时候,得到的结果却不是想要的

echo $x+=1         ------------> 输出:2+=1,并不是想要的结果2

Linux下有多种方法进行计算,一下摘录几例:

1.使用$[]

  个人最常用的就是$[]方法进行计算,简单方便,适合不太复杂的计算。

  

[plain] 
 
 
  1. x=1  
  2. echo $[$x+=1]  

输出:2

 

2.使用expr

expr命令为Linux中的命令,一般用于整数值计算,但也可用于字符串操作。
使用格式:
expr var1 operator var2
 
例如:
[plain] 
 
 
  1. x=1  
  2. expr $x + 4   
输出:5
 
注意:表达式之间的空格,注意只能进行整数运算,如果操作数不为整数,命令将会报错。
此命令所有计算的结果会以整数形式返回,例如上述的表达式变为:expr $x / 4 ,其结果为1,结果已经自动进行了取整操作。
 
 
3.使用(())
 
使用方法:((表达式1,表达式2,表达式3))
 
相比上面的两种方法,(())这种方法略显强大,它的强大之处在于:
1) 支持a++,a--操作(是不是找到C语言的感觉)
2) 支持多个表达式运算,各个表达式之间用“,”分开
3) 双括号可以进行逻辑运算,四则运算
4) 双括号结构 扩展了for,while,if条件测试运算
5) 在双括号结构中,所有变量可以不加入:“$”符号前缀
 
[plain] 
 
 
  1. x=1  
  2. ((y = x + 1,z = y + 1))  
  3. echo $z  
输出:3
 
如果双括号带:$,将获得表达式值,赋值给左边变量
[plain] 
 
 
  1. a=10  
  2. b=10  
  3. total=$((a*b))  
[plain] 
 
 
  1. echo $total  
输出:100
 
扩展流程控制语句(逻辑关系式)(摘自网络)
[plain] 
 
 
  1. #!/bin/sh   
  2. num=100;   
  3. total=0;   
  4. for((i=0;i<=num;i++));   
  5. do   
  6. ((total+=i));   
  7. done   
  8. echo $total;   
  9. total=0;   
  10. i=0;   
  11. while((i<=num));   
  12. do   
  13. ((total+=i,i++));   
  14. done   
  15. echo $total;   
  16. if((total>=5050));then   
  17. echo "ok";   
  18. fi   
4.使用 let 命令
[plain] 
 
 
  1. var=1  
  2. let "var+=1" 或 let var+=1 这种写法运算符间不能有空格   
  3. echo $var  
  4.   
  5. output:  
  6. 2  
使用方法:
let 表达式
注意:let必须是完整的算术表达式,即有等号两边

转载于:https://www.cnblogs.com/liujiacai/p/7828595.html

你可能感兴趣的文章
【uoj2】 NOI2014—起床困难综合症
查看>>
js return的用法
查看>>
子节点填充父元素除去一固定高度后的剩余高度
查看>>
[原]IOS 后台发送邮件
查看>>
(转)JAVA Calendar详解
查看>>
转: 编码,charset,乱码,unicode,utf-8与net简单释义
查看>>
C#--正则匹配
查看>>
5.30 考试修改+总结
查看>>
BA-设计施工调试流程
查看>>
C#-CLR各版本特点
查看>>
css3背景透明文字不透明
查看>>
《java JDK7 学习笔记》之接口与多态
查看>>
LeetCode 96:Unique Binary Search Trees
查看>>
kernel-char设备的建立
查看>>
DVWA-CSRF
查看>>
ubuntu common software introduction
查看>>
资源相互引用时 需添加 PerformSubstitution=True
查看>>
MapRedece(单表关联)
查看>>
蒲公英App开发之检测新版本
查看>>
【安卓基础】倒计时按钮封装(验证码倒计时按钮)
查看>>