shell中的数值运算
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中的数值运算的更多相关文章
- Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构
一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...
- Shell编程——Shell中的数学运算
在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...
- 在shell script中进行数值运算的两种方法
方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...
- linux下数学运算器:expr命令(shell中完成数学运算)
expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: expr argument operator argument expr也是一个手工命令行计数器. $expr 10 ...
- shell中的数学运算
shell中要进行数学运算通常有3中方法: expr命令 比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如: ...
- Shell中数学计算/运算
shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算 ...
- linux中的数值运算
一.declare 作用:声明变量类型,bash默认变量为字符串类型的,并且字符串在拼接时直接拼接,不需要加号 使用方法: 二.数值运算 加法运算 a= b= c=$(($a+$b)) echo $c
- shell脚本基础 数值运算 判断 及if语句
数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...
- shell基础:数值运算与运算符
linux的shell中,变量的类型默认都是字符串型. export将aa声明为环境变量.也可用declare声明.其实就是改变了-x属性 $(()) 最常用.
随机推荐
- 新的征程 in ZJU
争取考上了心仪的学校 并进入了心仪的实验室 但是对我来说,未来将是更多的挑战 首先我觉得我学习能力还是不足,无法做到一天的高效率学习 实验室的方向是可视化,我觉得这个是个非常复杂的方向 数学,pyth ...
- 简单的switch嵌套
//添加list数据 1 public static void main(String[] args) { List<String> al = new ArrayList<Strin ...
- [Clr via C#读书笔记]Cp4类型基础
Cp4类型基础 Object类型 Object是所有类型的基类,有Equals,GetHashCode,ToString,GetType四个公共方法,其中GetHashCode,ToString可以o ...
- leetcode9_C++判断一个整数是否是回文数
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 输出: true 示例 2: 输入: - 输出: false 解释: 从左向右读, 为 - ...
- visionpro吧-百度贴吧
Halcon,Visionpro视频教程,观看下载地址:http://www.211code.com
- 基础数据类型-set
Set是无序不重复元素的序列,基本功能是删除重复元素和测试成员关系, 创建一个集合可以用set()或者({}),但是创建一个空集合只能用set(): s1 = set() print("s1 ...
- 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 ...
- HDU 4169 Wealthy Family(树形DP)
Problem Description While studying the history of royal families, you want to know how wealthy each ...
- 关于css的总结
写在前面 ,学好css,需要长期的推敲和积累 ,细节是不断完善的,逐渐形成自己的风格 让自己的css更加接近优雅. 下面来总结一些我觉得比较好的css代码风格 : 1. 一般网页中的背景 用 ...
- coding.net 版本控制
这是版本测试的所有内容,其中用到了 git 和coding的远程连接. 代码及版本控制 git地址:https://git.coding.net/tianjiping/11111.git