zoukankan      html  css  js  c++  java
  • Linux

    Shell - 数值运算

    因为shell脚本是属于弱语言,没有变量类型的概念,所以定义变量会默认为字符串。就算看上去是一个数字,当直接进行计算时,就会出错:

    x=1
    echo $x+=1
    # 输出1+=1,并不是自己想要的2
    

    所以当我们需要进行数值运算时,我们需要一些特殊的方法,在Linex中提供了好几种方法。

    1. 使用 $[]

    x=1
    echo $[$x+=1]
    

    2. 使用 expr

    expr为Linux中的一个命令,可以用于数值计算,也可以用于字符串操作:

    x=1
    expr 14 % 9
    expr 10 + 10
    expr $x + 1
    # 使用乘号比较特殊,必须用反斜杠
    expx $x * 3
    

    使用expr也存在缺陷:进行计算的值只能为整数,得到的结果也会以整数形式返回。

    3. 使用 (())

    相比于$[]expr,这种方式功能比较强大:

    • 支持++,--操作
    • 支持多个表达式运算,用逗号分隔
    • 双括号可以进行逻辑运算,四则运算
    • 双括号结构拓展了for,while,if条件测试运算
    • 在双括号结构中,所有变量可以不加入$符号前缀
    x=1
    (( y = x + 1,z = y + 1 ))
    echo $z
    a=10
    b=10
    total=$((a*b))
    

    4. 使用 let

    var=1
    # 这种写法运算符间不能有空格 
    let "var+=1" 
    let var+=1 
    echo $var
    
  • 相关阅读:
    [置顶] MapReduce 编程之 倒排索引
    java学习之路---线程(重点)
    CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(五)
    qsort的几种用法
    两道水题(月之数)(排序)
    快排
    Red and Black(简单dfs)
    zb的生日(暴搜dfs)
    又见01背包
    五子棋
  • 原文地址:https://www.cnblogs.com/yisany/p/10338964.html
Copyright © 2011-2022 走看看