shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法。以后用到的时候能够来看,呵呵
1、错误方法举例

a)

var=1+1

echo $var

输出的结果是1+1,悲剧,呵呵



b)

var=1

var=$var+1

echo $var

输出结果是1+1。依旧悲剧,呵呵



2、正确方法

1)使用let

var=1

let "var+=1"

echo $var

输出结果为2。这次没有悲剧

注意:

a)经我測试let差点儿支持全部的运算符,在网上看到一篇文章说“let不支持++、--和逗号、(、)”,但经我測试自加、自减、以及括号的优先级都得到了非常好的支持

b)方幂运算应使用“**”

c)參数在表达式中直接訪问,不必加$

d)普通情况下算数表达式能够不加双引號,可是若表达式中有bash中的keyword则需加上

e)let后的表达式仅仅能进行整数运算



2)使用(())

var=1

((var+=1))

echo $var

输出结果为2

注意:

(())的用法与let全然同样



3)使用$[]

var=1

var=$[$var+1]

echo $var

输出结果位2

注意:

a)$[]将中括号内的表达式作为数学运算先计算结果再输出

b)对$[]中的变量进行訪问时前面须要加$

c)$[]支持的运算符与let同样,但也仅仅支持整数运算



4)使用expr

var=1

var=`expr $var + 1`

echo $var

输出结果为2

注意:

a)expr后的表达式个符号间需用空格隔开

b)expr支持的操作符有: |、&、<、<=、=、!=、>=、>、+、-、*、/、%

c)expr支持的操作符中所在使用时需用\进行转义的有:|、&、<、<=、>=、>、*

e)expr相同仅仅支持整数运算



5)使用bc(能够进行浮点数计算)

var=1

var=`echo "$var+1"|bc`

echo $var

输出结果为2

介绍:

bc是linux下的一个简单计算器,支持浮点数计算。在命令行下输入bc即进入计算器程序。而我们想在程序中直接进行浮点数计算时,利用一个简单的管道就可以解决这个问题。

注意:

1)经我測试bc支持除位操作运算符之外的全部运算符。

2)bc中要使用scale进行精度设置

3)浮点数计算实例

var=3.14

var=`echo "scale=2;$var*3"|bc`

echo $var

输出结果为9.42



6)使用awk(可已进行浮点数计算)

var=1

var=`echo "$var 1"|awk '{printf("%g",$1*$2)}'`

echo $var

输出结果为2

介绍:

awk是一种文本处理工具。同一时候也是一种程序设计语言,作为一种程序设计语言。awk支持多种运算,而我们能够利用awk来进行浮点数计算,和上面bc一样,通过一个简单的管道,我们便可在程序中直接调用awk进行浮点数计算。


注意:

1)awk支持除微操作运算符之外的全部运算符

2)awk内置有log、sqr、cos、sin等等函数

3)浮点数计算实例

var=3.14

var=`echo "$var 2"|awk '{printf("%g",sin($1/$2))}'`

echo $var

输出结果为1

3、总结

最终把全部能搜集到的资料看完,并最后总结出一套自己的东西了,以后再遇到类似问题就有的看了,哈哈~


shell脚本中的数学运算的更多相关文章

  1. Shell编程——Shell中的数学运算

    在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...

  2. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

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

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

  4. shell脚本中常见的一些特殊符号和作用详解

    这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下   在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...

  5. 数组-在Shell脚本中的基本使用介绍

    Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节.下面是对shell脚本中数组方面一些操作在此进行记录,希望能帮助到有兴趣的朋友~1. ...

  6. bash shell脚本之使用expr运算

    bash shell中的数学运算 cat test7: #!/bin/bash # An example of using the expr command var1= var2= var3=`exp ...

  7. shell脚本中的各种表达式介绍和使用

    #前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 #首先来看一下条件测试语法 #条件测试语 ...

  8. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  9. shell脚本中的反引号使用 `

    反引号是~的英文切换 在shell脚本中,反引号允许将shell命令的输出赋值给变量. test=`date` 这样shell会执行反引号中的命令.并将执行的结果赋值给变量tests.

随机推荐

  1. 排序(6)---------归并排序(C语言实现)

    归并排序: 归并操作,也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.归并排序算法依赖归并操作. 归并操作的步骤例如以下:     (1) 申请空间,使其大小为两个已经排序序列之和.该空 ...

  2. android面试题 不仅仅是面试是一个很好的学习

    下面的问题是在网上找到的总结,感谢您分享!希望,我们的共同进步,找到自己心仪的公司,: 1.android dvm 流程和Linux这个过程.无论是应用程序对同一概念: 答案:dvm是dalivk虚拟 ...

  3. Python语法

  4. LeetCode——Populating Next Right Pointers in Each Node II

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  5. HDU 1242——Rescue(优先队列)

    题意: 一个天使a被关在迷宫里,她的很多小伙伴r打算去救她.求小伙伴就到她须要的最小时间.在迷宫里有守卫.打败守卫须要一个单位时间.假设碰到守卫必须要杀死他 思路: 天使仅仅有一个,她的小伙伴有非常多 ...

  6. CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失

    CentOS7 下linux不能上网解决方法​ 在CentOS VMware下安装好linux后,发现有时不能直接联网,特分享下总结出来的经验,希望对新手有用 工具/原料 XP系统 VMware.Wo ...

  7. JavaScript 中的事件类型5(读书笔记思维导图)

    Web 浏览器中可能发生的事件有很多类型.如前所述,不同的事件类型具有不同的信息,而“ DOM3级事件”规定了以下几类事件. UI(User Interface,用户界面)事件:当用户与页面上的元素交 ...

  8. ajaxterm不好还是gateone好

    http://pkgs.org/centos-5-rhel-5/epel-i386/Ajaxterm-0.10-8.el5.noarch.rpm.html Web SSH 客户端Ajaxterm安装 ...

  9. KMP算法的Next数组详解(转)

    转载请注明来源,并包含相关链接. 网上有很多讲解KMP算法的博客,我就不浪费时间再写一份了.直接推荐一个当初我入门时看的博客吧: http://www.cnblogs.com/yjiyjige/p/3 ...

  10. 自己定义控件(2.2):SurfaceView和SurfaceHolder

    本例需求及流程: Activity载入自己定义的SurfaceView-> SurfaceView 构造器中启动线程A.循环改变SurfaceView的x,y坐标,当x,y坐标到某点时设渐显标志 ...