快速业务通道

Linux shell编程(三)算术运算

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-04

例如:

echo $((${j:-8} 2))

如果变量j不存在或空值,则${j:-8}展开的结果为8,再和2做加法运算,得10

例如:

echo $((k 4))

如果变量k不存在或空值,其值为0 4=4

一.算术扩展

算术扩展的语法是:$((表达式))

例如:

unset i

echo $((12 $i))

如果表达式内有变量,该变量名称之前最好不要加上$这个符号

变量i不存在,结果就变为12

如果写成:echo $((12 i)),这样可正确执行.

如果表达式中有“变量扩展”,则要加上$

例如:$((${j:-8} 2))

各种简单的算术运用:

r=$((6 5)) r的值为11

r=$((6*5)) r的值为30

r=$((2**5)) r的值为32 (2的5次方)

递增 1

r=6

r=$(( r))

echo $r

结果为7. (r值加1后,在赋值给r)

递减 1

r=6

r=$((--r))

echo $r

结果为5. (r值减1后,在赋值给r)

运算后减 1

m=6

r=$((4 m--))

m值先代入6,和4做运算,得值为10,在赋值给r.接着m的值减1,结果为:r=10 m=5

位左移

m=16

r=$((m<<1))

Empire CMS,phome.net
m值代入16,以二进制的方式向左移一位,等于把值放大两倍,结果为:32

位右移

m=16

r=$((m>>1))

等于把值缩小2倍,结果为:8

i=168

((i =60))

i =60的意思同于i=i 60,即i加上60后,把运算结果赋值给i,i的值变成228

((i-=60))的意思同于i=i-60

((i/=2))的意思同于i=i/2

(())的用法和let的效果是一样的,例如((i ))和let "i "执行结果相同

二. 使用$[]做算术运算

使用$[]做算术运算和$(())类似

语法:r=$[算术式]

r=5

r=$[r 1]

echo $r

结果为:6

三. 使用内置命令declare、let做算术运算

declare -i I

Empire CMS,phome.net
I=8 16

echo $I

使用declare事先设定变量I的属性为“整数”

I是整数,8 16就不再是字符串,而是一个算式,结果为:24

特别留意的是:

算式中,运算符和操作数之间不可以有空格,要紧密连接

特殊符号不必使用转义

算式中,可包含其他变量,变量之前不必加$

使用declare -i 设定变量后,加减乘除等运算就非常直观了

declare -i I

I=8 16

I=16-8

I=5*3

I=22/5

I=2**3

let的用法

例如:let I=8 16

let I=22/5

let I=''16-8''

Empire CMS,phome.net

本文出自 “我的地盘听我的” 博客,请务必保留此出处http://2614223.blog.51cto.com/2604223/579227

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号