• 双小括号数值运算


    双小括号的作用是进行数值运算与数值的比较,它的效率很高,用法很灵活,是经常采用的操作符。
    ((i=i+1)) 它的作用就是把i+1的结果赋值给变量i。注意,不可以用 echo ((i=i+1)) 的形式输出表达式的值,但可以用echo $((i=i+1)) 输出其值。
    i=$((i+1)) 作用就是把i+1的执行结果赋值给变量i。
    ((8>7&&5==5)) 用于数值之前的比较,用于条件判断。
    echo $((2+1)) 用于直接输出运算表达式的结果,在(()) 前面加$符号。
     
    范例1.利用(()) 进行简单的数值计算
    [root@testdb ~]# echo $((1+1))
    2
    [root@testdb ~]# echo $((6-3))
    3
    [root@testdb ~]# ((i=5))
    [root@testdb ~]# ((i=i*2))
    [root@testdb ~]# echo $i
    10
     
     
    范例2.利用(())进行稍微复杂一些的综合算术运算
    [root@testdb ~]# ((a=1+2**3-4%3))
    [root@testdb ~]# echo $a
    8
    [root@testdb ~]# b=$((1+2**3-4%3))
    [root@testdb ~]# echo $b
    8
    [root@testdb ~]# echo $((1+2**3-4%3))
    8
    [root@testdb ~]# a=$((100*(100+1)/2))
    [root@testdb ~]# echo $a
    5050
    [root@testdb ~]# echo $((100*(100+1)/2)) 
    5050
     
    范例3.特殊运算符号的运算小示例
    [root@testdb ~]# a=8
    [root@testdb ~]# echo $((a=a+1))
    9
    [root@testdb ~]# echo $((a+=1))
    10
    [root@testdb ~]# echo $((a**2))
    100
     
    范例4.利用(())双括号进行比较判断
    [root@testdb ~]# echo $((3<8))
    1
    [root@testdb ~]# echo $((8<3))
    0
    [root@testdb ~]# echo $((8==8))
    1
    [root@testdb ~]# if ((8>7 && 5==5))
    > then
    > echo yes
    > fi
    yes
     
    范例5.在变量前后使用--和++特殊运算符的表达式
    [root@testdb ~]# a=10
    [root@testdb ~]# echo $((a++))
    10
    [root@testdb ~]# echo $a
    11
    [root@testdb ~]# a=11
    [root@testdb ~]# echo $((a--))
    11
    [root@testdb ~]# echo $a
    10
    [root@testdb ~]# a=10
    [root@testdb ~]# echo $a
    10
    [root@testdb ~]# echo $((--a))
    9
    [root@testdb ~]# echo $a
    9
    [root@testdb ~]# echo $((++a))
    10
    [root@testdb ~]# echo $a
    10
     
    [root@testdb ~]# myvar=99
    [root@testdb ~]# echo $((myvar+1))
    100
    [root@testdb ~]# echo $(( myvar + 1 ))
    100
    [root@testdb ~]# myvar=$((myvar+1))
    [root@testdb ~]# echo $myvar
    100
     
    范例6.通过(())运算赋值给变量
    [root@testdb ~]# myvar=99
    [root@testdb ~]# echo $((myvar+1))
    100
    [root@testdb ~]# echo $(( myvar + 1 ))
    100
    [root@testdb ~]# myvar=$((myvar+1))
    [root@testdb ~]# echo $myvar
    100
     
    范例7.包含(()) 的各种常见运算符命令的执行示例
    [root@testdb ~]# echo $((6+2))
    8
    [root@testdb ~]# echo $((6-2))
    4
    [root@testdb ~]# echo $((6*2))
    12
    [root@testdb ~]# echo $((6/2))
    3
    [root@testdb ~]# echo $((6%2))
    0
    [root@testdb ~]# echo $((6**2))
    36
     
    范例8.各种(())运算的shell脚本示例
    [root@testdb ~]# cat test.sh
    #!/bin/bash
    a=6
    b=2
    echo "a-b=$(($a-$b))"
    echo "a+b=$(($a+$b))"
    echo "a*b=$(($a*$b))"
    echo "a/b=$(($a/$b))"
    echo "a**b=$(($a**$b))"
    echo "a%b=$(($a%$b))"
    [root@testdb ~]# sh test.sh
    a-b=4
    a+b=8
    a*b=12
    a/b=3
    a**b=36
    a%b=0
     
    范例9.范例8改写成脚本传参的形式
    [root@testdb ~]# cat test.sh 
    #!/bin/bash
    a=$1
    b=$2
    echo "a-b=$(($a-$b))"
    echo "a+b=$(($a+$b))"
    echo "a*b=$(($a*$b))"
    echo "a/b=$(($a/$b))"
    echo "a**b=$(($a**$b))"
    echo "a%b=$(($a%$b))"
    [root@testdb ~]# sh test.sh 8 2
    a-b=6
    a+b=10
    a*b=16
    a/b=4
    a**b=64
    a%b=0
    [root@testdb ~]# sh test.sh 10 2
    a-b=8
    a+b=12
    a*b=20
    a/b=5
    a**b=100
    a%b=0
  • 相关阅读:
    query and join operation after sharding
    Windows Phone中的几种集合控件
    什么是SOPA SOPA的危害
    自动刷新人人网API session_key方法
    Windows Phone XNA创建简单局域网游戏
    static 修饰MySqlConnection引发的异常
    $Dsu$ $on$ $Tree$ 复习
    $Noip$前的小总结哦
    $NOIP2018$ 暴踩全场计划实施方案
    $NOIP2018$ 爆踩全场记
  • 原文地址:https://www.cnblogs.com/l10n/p/12610973.html
Copyright © 2020-2023  润新知