设为首页 收藏本站
查看: 1640|回复: 0

shell脚本编程之算术运算

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-11 09:08:12 | 显示全部楼层 |阅读模式
shell中的算术运算要求数字和运算符之间不能有空格;
特殊符号也不需要转义;
如果算术表达式中包含其它变量,也不需要用$引用;

常规算术运算:
    +:加运算
    -:减运算
    *:乘运算
    /:除运算
    %:取余运算
    **:幂运算

复合算术运算:
    +=:加等运算
        x=8;x+=2-->变量x运算结果为10
    -=:减等运算
    *=:乘等运算   #有时候乘法符号需要转义;(比如expr运算)
    /=:除等运算
    %=:余等运算
        
let命令:
    let是shell内建的整数运算命令;
    (1) let var=算术表达式
        不直接显示运算结果,需要用 echo $VAR 显示结果;
    (2) var=$[]
    (3) var=$(())
    (4) var=$(expr arg1 arg2 arg3 ...)            
    (5) declare –i var=数值  #声明整数变量;
    (6) echo '算术表达式' | bc        

    let i=2+2 -->i=4
    let j=5-2 -->j=3
    let k=2*5 -->k=10
    let L=15/7 -->L=2(整数运算)
    let m=15%7 -->m=1(取余)
    let n=2**3 -->n=8(2的3次方)
   
    let也支持类C的计算方式:
    let i++ 自增1
    let i-- 自减1
    let i+=10 i值等于i增加10
    let i-=10 i值等于i减少10
    let i*=10 i值等于i乘以10
    let i/=10 i值等于i除以10
    let i%=10 i值等于i模10
   
增强型赋值:
    自身=自身+数字,变量做算术运算后将结果存回自身;
    i=$[$i+1] (自加1后自赋值,每执行一次数值+1)
    echo $i
   
expr命令:
    整数运算,要求操作数与符号之间用空格隔开;否则直接打印出字符串;所以特殊的操作符需要转义,比如*;
    直接返回计算结果;   
        #expr 1 + 1   
        #expr 3 \* 10        

bc命令:
    是一种语法,为任意精度算术语言提供解释器;
    使用bc最简单的方式是直接输入bc命令,回车后进入交互式界面;
    #bc
    a=8
    b=3
    a+b
    11
    a-b
    5
    a*b
    24
    a/b
    2
    scale=3  #设置显示的小数位数;
    a/b
    2.666
    默认情况下bc并不显示小数部分,必须设置要显示的小数位数;通过设置scale指定要显示的小数位数;
   
    bc还支持比较运算,逻辑运算;
    比较运算,真为1,假为0;
    #bc
    2>1
    1
    2<1
    0
    2==2
    1
    逻辑运算,真为1,假为0;逻辑运算中非0结果都是1;
    #bc
    1&&2
    1
    1&&0
    0
    1||0
    1
    1||2
    1
    1||3
    1
    0||2
    1
    !0
    1
    !1
    0
    !2
    0
    1&&a
    1
    0||a
    1

    在脚本中,往往只需要调用bc的处理结果而不会进入交互界面,bc支持批量处理和管道方式处理表达式计算;
    希望一次性处理多个计算,只需要创建一个文件,并按行写好需要计算的表达式就可以了;
    #cat cal.bc
    12*34
    34/12
    scale=3;34/12
    a=1;b=2;a+b
    #cat cal.bc | bc
    408
    2
    2.833
    3
   
bash有内建的随机数生成器:
    $RANDOM(1-32767)
    echo $[$RANDOM%50] #1-49之间随机数
            


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-242341-1-1.html 上篇帖子: shell编程之测试,判断,循环 下篇帖子: shell编程之函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表