算术运算符——整数运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算术运算符——整数运算相关的知识,希望对你有一定的参考价值。

shell中进行整数运算需要借助一些辅助工具,如:expr、declare、let、((  ))、$[  ]

1、expr有很多不完善之处,此处不写。

2、declare:

    declare -i 命令定义整形变量,当使用此命令对变量赋值后,变量便可进行算术运算。

    需要注意的是:

    如果给整形变量赋值的是一个字符串值,则bash会将变量赋值为0。

    使用declare -i命令生成的变量执行算术运算时,各变量之间不能有空格。

[email protected]:~$ declare -i m n
[email protected]:~$ m=1
[email protected]:~$ n=2
[email protected]:~$ m+=1
[email protected]:~$ n+=2
[email protected]:~$ echo $m $n
2 4
[email protected]:~$ m=m+n
[email protected]:~$ echo $m
6

新声明一个整形变量d,进行计算
[email protected]:~$ declare -i d
[email protected]:~$ d=m+n
[email protected]:~$ echo $d
10

使用一个未声明为整形的变量c,进行计算
[email protected]:~$ c=m+n
[email protected]:~$ echo $c
m+n

    直接执行declare -i 命令可以查看已经定义的整形变量

[email protected]:~$ declare -i
……
declare -ir UID="1000"
declare -i a="8"
declare -i d="10"
declare -i m="6"
declare -i n="4"

    使用declare -i 命令声明变量后还可以用不同进制的数字表示十进制数

第一种写法:
[email protected]:~$ declare -i m
[email protected]:~$ m=2#101
[email protected]:~$ echo $m
5
[email protected]:~$ m=8#17
[email protected]:~$ echo $m
15
[email protected]:~$ m=16#b
[email protected]:~$ echo $m
11

第二种写法:
[email protected]:~$ declare -i n=017   其中017中的0代表八进制
[email protected]:~$ echo $n
15


3、let: let是bash shell的一个内建命令。可以help let查看帮助

[email protected]:~$ i=5
[email protected]:~$ let i=i+1
[email protected]:~$ echo $i
6
[email protected]:~$ let "i = i + 2"
[email protected]:~$ echo $i
8

    需要注意的是: 使用let时,如果运算表达式没有使用双引号,则表达式之间不能有空格;如果使用了双引号,则表达式之间可以有空格。

建议使用双引号。


4、((  )) :let也可以用((  ))替换

[email protected]:~$ i=3
[email protected]:~$ ((i+=2))
[email protected]:~$ echo $i
5
[email protected]:~$ (( i+= 2))
[email protected]:~$ echo $i
7
[email protected]:~$ (( "i+= 2" ))
[email protected]:~$ echo $i
9

    ((  ))还可以直接一步出结果,有无空格无影响。双括号中不可以使用变量

[email protected]:~$ i=2
[email protected]:~$ echo $((i+= 3 ))
5


5、$[  ]  中括号中有无空格无影响。中括号中可以使用变量

[email protected]:~$ var=$[1+ 2 ]
[email protected]:~$ echo $var
3
[email protected]:~$ echo $[3+2]
5
[email protected]:~$ m=2
[email protected]:~$ echo $[$m +1 ]
3



let使用双引号时支持:

+ - * / % >> << & ^ | > < =  以及这些符号与=号结合的符号。

并且还支持 == 和 !=

[email protected]:~$ let "c=m==n"
[email protected]:~$ echo $c
0
[email protected]:~$ let "c=m!=n"
[email protected]:~$ echo $c
1








本文出自 “甘木” 博客,请务必保留此出处http://ganmu.blog.51cto.com/9305511/1961520

以上是关于算术运算符——整数运算的主要内容,如果未能解决你的问题,请参考以下文章

仅使用 32 位整数的算术运算

算术运算符——整数运算

Java 算术运算符/,%,++的本质详解

shell 算数运算符

Java运算符

Python运算符 ( 算术运算符 | 赋值运算符 )