By francis_hao    Oct 2,2017

 

本文摘录自bash的man手册。

 

算数运算相关的形式

形式

含义

((expression))

expression按照下面描述的算术运算规则进行运算。如果最终结果是非0的,返回0。其他结果返回1。该形式和let "expression"等同

let arg [arg ...]

每个arg都是一个算数表达式,如果最后一个arg结果是非0的,返回0,其他结果返回1。

 

算数扩展

算数扩展允许计算算数表达式,并替换该结果。算数扩展的形式是

$((expression))

expression被视作在双引号""中,但是在圆括号中双引号不被特殊处理。expression中的所有项都会被参数扩展和命令替换。如果expression无效,bash会打印一条指示失败的信息。另外,算数扩展可以嵌套。

例如:

其中,算数扩展会直接替换结果,因此$((1+1))就结果来说,就是2。

 

算术运算

在特定的环境下(例如let和算数扩展中),shell允许数值的算数运算,运算在固定长度的整数中运算,并且不检查是否溢出。除以0会被捕获并标记为错误(打印一条错误信息)。运算符和他们的优先级、结合律和C语言中的一致,括号可以改变优先级。下表按照优先级由高到低排序。

运算符

说明

id++ d--

自增,自减(先取值后运算)

++id --id

自增,自减(先运算后取值)

  • +

一元的负号和正号

! ~

逻辑非和按位非

**

乘方

* / %

 

+ -

 

<< >>

 

<= >= < >

 

== !=

 

&

 

^

按位异或

|

 

&&

 

||

 

expr?expr:expr

 

= *= /= %= += -= <<= >>= &= ^= |=

 

expr1 , expr2

逗号

 

在表达式中,shell变量可以不使用$来引用,一个null或未设置的变量被当做0来处理。变量可以通过declare的-i选项来设置其整数属性,但是,在算数表达式中的变量不是必须拥有整数属性,因为表达式中默认当作整数处理。

以0开头的常数被解释成八进制数,以0x或0X开头标记为十六进制,其他的进制可以通过[base#]n来表示,其中,可选的base是一个十进制数,在0-64之间,表示进制。n是指定的进制的数,如果base#被省略,则使用十进制。大于9的数字会使用小写字母、大写字母、@和_按顺序表示。最大为64进制,就是最大要能表示到63,那么0-9代表0-9,a-z表示10-35,A-Z表示36-61,@表示62,_表示63。

 

 


本文由 刘英皓 创作,采用 知识共享署名-非商业性使用-相同方式共享3.0中国大陆许可协议 进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/7622777.html

 

 

参考

【1】脚本之家 http://www.jb51.net/article/57943.htm Shell脚本中不同进制数据转换

【2】stackoverflow.com https://stackoverflow.com/questions/27738943/what-is-unary-plus-minus-in-r

【3】man sh

shell中的数值运算的更多相关文章

  1. Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构

    一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...

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

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

  3. 在shell script中进行数值运算的两种方法

    方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...

  4. linux下数学运算器:expr命令(shell中完成数学运算)

    expr用法  expr命令一般用于整数值,但也可用于字符串.一般格式为:  expr argument operator argument  expr也是一个手工命令行计数器.  $expr 10 ...

  5. shell中的数学运算

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

  6. Shell中数学计算/运算

    shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算 ...

  7. linux中的数值运算

    一.declare 作用:声明变量类型,bash默认变量为字符串类型的,并且字符串在拼接时直接拼接,不需要加号 使用方法: 二.数值运算 加法运算 a= b= c=$(($a+$b)) echo $c

  8. shell脚本基础 数值运算 判断 及if语句

    数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...

  9. shell基础:数值运算与运算符

    linux的shell中,变量的类型默认都是字符串型. export将aa声明为环境变量.也可用declare声明.其实就是改变了-x属性 $(()) 最常用.

随机推荐

  1. 新的征程 in ZJU

    争取考上了心仪的学校 并进入了心仪的实验室 但是对我来说,未来将是更多的挑战 首先我觉得我学习能力还是不足,无法做到一天的高效率学习 实验室的方向是可视化,我觉得这个是个非常复杂的方向 数学,pyth ...

  2. 简单的switch嵌套

    //添加list数据 1 public static void main(String[] args) { List<String> al = new ArrayList<Strin ...

  3. [Clr via C#读书笔记]Cp4类型基础

    Cp4类型基础 Object类型 Object是所有类型的基类,有Equals,GetHashCode,ToString,GetType四个公共方法,其中GetHashCode,ToString可以o ...

  4. leetcode9_C++判断一个整数是否是回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 输出: true 示例 2: 输入: - 输出: false 解释: 从左向右读, 为 - ...

  5. visionpro吧-百度贴吧

    Halcon,Visionpro视频教程,观看下载地址:http://www.211code.com

  6. 基础数据类型-set

    Set是无序不重复元素的序列,基本功能是删除重复元素和测试成员关系, 创建一个集合可以用set()或者({}),但是创建一个空集合只能用set(): s1 = set() print("s1 ...

  7. HDU 2487 Ugly Windows(暴力)(2008 Asia Regional Beijing)

    Description Sheryl works for a software company in the country of Brada. Her job is to develop a Win ...

  8. HDU 4169 Wealthy Family(树形DP)

    Problem Description While studying the history of royal families, you want to know how wealthy each ...

  9. 关于css的总结

    写在前面  ,学好css,需要长期的推敲和积累  ,细节是不断完善的,逐渐形成自己的风格    让自己的css更加接近优雅. 下面来总结一些我觉得比较好的css代码风格 : 1. 一般网页中的背景 用 ...

  10. coding.net 版本控制

    这是版本测试的所有内容,其中用到了  git 和coding的远程连接. 代码及版本控制 git地址:https://git.coding.net/tianjiping/11111.git