加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

算术运算符――整数运算

发布时间:2020-12-15 16:24:35 所属栏目:安全 来源:网络整理
导读:shell中进行整数运算需要借助一些辅助工具,如:expr、declare、let、(( ))、$[ ] 1、expr有很多不完善之处,此处不写。 2、declare: declare -i 命令定义整形变量,当使用此命令对变量赋值后,变量便可进行算术运算。 需要注意的是: 如果给整形变量赋值的

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

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

2、declare:

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

需要注意的是:

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

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

test@kickseed:~$declare-imn
test@kickseed:~$m=1
test@kickseed:~$n=2
test@kickseed:~$m+=1
test@kickseed:~$n+=2
test@kickseed:~$echo$m$n
24
test@kickseed:~$m=m+n
test@kickseed:~$echo$m
6

新声明一个整形变量d,进行计算
test@kickseed:~$declare-id
test@kickseed:~$d=m+n
test@kickseed:~$echo$d
10

使用一个未声明为整形的变量c,进行计算
test@kickseed:~$c=m+n
test@kickseed:~$echo$c
m+n

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

test@kickseed:~$declare-i
……
declare-irUID="1000"
declare-ia="8"
declare-id="10"
declare-im="6"
declare-in="4"

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

第一种写法:
test@kickseed:~$declare-im
test@kickseed:~$m=2#101
test@kickseed:~$echo$m
5
test@kickseed:~$m=8#17
test@kickseed:~$echo$m
15
test@kickseed:~$m=16#b
test@kickseed:~$echo$m
11

第二种写法:
test@kickseed:~$declare-in=017其中017中的0代表八进制
test@kickseed:~$echo$n
15


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

test@kickseed:~$i=5
test@kickseed:~$leti=i+1
test@kickseed:~$echo$i
6
test@kickseed:~$let"i=i+2"
test@kickseed:~$echo$i
8

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

建议使用双引号。


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

test@kickseed:~$i=3
test@kickseed:~$((i+=2))
test@kickseed:~$echo$i
5
test@kickseed:~$((i+=2))
test@kickseed:~$echo$i
7
test@kickseed:~$(("i+=2"))
test@kickseed:~$echo$i
9

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

souche@kickseed:~$i=2
souche@kickseed:~$echo$((i+=3))
5


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

test@kickseed:~$var=$[1+2]
test@kickseed:~$echo$var
3
test@kickseed:~$echo$[3+2]
5
test@kickseed:~$m=2
test@kickseed:~$echo$[$m+1]
3



let使用双引号时支持:

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

并且还支持 == 和 !=

test@kickseed:~$let"c=m==n"
test@kickseed:~$echo$c
0
test@kickseed:~$let"c=m!=n"
test@kickseed:~$echo$c
1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读