((表达式))
通俗地讲,就是将数学运算表达式放在((
和))
之间。,
分隔。对于多个表达式的情况,以最后一个表达式的值作为整个 (( )) 命令的执行结果。$
获取 (( )) 命令的结果,这和使用$
获得变量值是类似的。运算操作符/运算命令 | 说明 |
---|---|
((a=10+66) ((b=a-15)) ((c=a+b)) |
这种写法可以在计算完成后给变量赋值。以 ((b=a-15)) 为例,即将 a-15 的运算结果赋值给变量 c。 注意,使用变量时不用加 $ 前缀,(( )) 会自动解析变量名。 |
a=$((10+66) b=$((a-15)) c=$((a+b)) |
可以在 (( )) 前面加上$ 符号获取 (( )) 命令的执行结果,也即获取整个表达式的值。以 c=$((a+b)) 为例,即将 a+b 这个表达式的运算结果赋值给变量 c。注意,类似 c=((a+b)) 这样的写法是错误的,不加 $ 就不能取得表达式的结果。 |
((a>7 && b==c)) | (( )) 也可以进行逻辑运算,在 if 语句中常会使用逻辑运算。 |
echo $((a+10)) |
需要立即输出表达式的运算结果时,可以在 (( )) 前面加$ 符号。 |
((a=3+5, b=a+10)) | 对多个表达式同时进行计算。 |
$
前缀,(( )) 会自动解析变量名,这使得代码更加简洁,也符合程序员的书写习惯。[task.lmcjl.com]$ echo $((1+1)) 2 [task.lmcjl.com]$ echo $((6-3)) 3 [task.lmcjl.com]$ i=5 [task.lmcjl.com]$ ((i=i*2)) #可以简写为 ((i*=2))。 [task.lmcjl.com]$ echo $i #使用 echo 输出变量结果时要加 $。 10
[task.lmcjl.com]$ ((a=1+2**3-4%3)) [task.lmcjl.com]$ echo $a 8 [task.lmcjl.com]$ b=$((1+2**3-4%3)) #运算后将结果赋值给变量,变量放在了括号的外面。 [task.lmcjl.com]$ echo $b 8 [task.lmcjl.com]$ echo $((1+2**3-4%3)) #也可以直接将表达式的结果输出,注意不要丢掉 $ 符号。 8 [task.lmcjl.com]$ a=$((100*(100+1)/2)) #利用公式计算1+2+3+...+100的和。 [task.lmcjl.com]$ echo $a 5050 [task.lmcjl.com]$ echo $((100*(100+1)/2)) #也可以直接输出表达式的结果。 5050
[task.lmcjl.com]$ echo $((3<8)) #3<8 的结果是成立的,因此,输出了 1,1 表示真 1 [task.lmcjl.com]$ echo $((8<3)) #8<3 的结果是不成立的,因此,输出了 0,0 表示假。 0 [task.lmcjl.com]$ echo $((8==8)) #判断是否相等。 1 [task.lmcjl.com]$ if ((8>7&&5==5)) > then > echo yes > fi yes最后是一个简单的 if 语句的格式,它的意思是,如果 8>7 成立,并且 5==5 成立,那么输出 yes。显然,这两个条件都是成立的,所以输出了 yes。
[task.lmcjl.com]$ a=10 [task.lmcjl.com]$ echo $((a++)) #如果++在a的后面,那么在输出整个表达式时,会输出a的值,因为a为10,所以表达式的值为10。 10 [task.lmcjl.com]$ echo $a #执行上面的表达式后,因为有a++,因此a会自增1,因此输出a的值为11。 11 [task.lmcjl.com]$ a=11 [task.lmcjl.com]$ echo $((a--)) #如果--在a的后面,那么在输出整个表达式时,会输出a的值,因为a为11,所以表达式的值的为11。 11 [task.lmcjl.com]$ echo $a #执行上面的表达式后,因为有a--,因此a会自动减1,因此a为10。 10 [task.lmcjl.com]$ a=10 [task.lmcjl.com]$ echo $((--a)) #如果--在a的前面,那么在输出整个表达式时,先进行自增或自减计算,因为a为10,且要自减,所以表达式的值为9。 9 [task.lmcjl.com]$ echo $a #执行上面的表达式后,a自减1,因此a为9。 9 [task.lmcjl.com]$ echo $((++a)) #如果++在a的前面,输出整个表达式时,先进行自增或自减计算,因为a为9,且要自增1,所以输出10。 10 [task.lmcjl.com]$ echo $a #执行上面的表达式后,a自增1,因此a为10。 10本教程假设读者具备基本的编程能力,相信读者对于前自增(前自减)和后自增(后自减)的区别也非常清楚,这里就不再赘述,只进行简单的说明:
[task.lmcjl.com]$ ((a=3+5, b=a+10)) #先计算第一个表达式,再计算第二个表达式 [task.lmcjl.com]$ echo $a $b 8 18 [task.lmcjl.com]$ c=$((4+8, a+b)) #以最后一个表达式的结果作为整个(())命令的执行结果 [task.lmcjl.com]$ echo $c 26
本文链接:http://task.lmcjl.com/news/7038.html