类似于let命令,((...))结构允许算术计算和求值.它最简单的形式a=$((5+3))会把变量"a"的值设置成"5+3"或8.但是,在Bash中双括号结构也是遵循C风格的变量操作的一种机制.例1.C风格的变量操作 1#!/bin/bash 2#用((...))结构来使用C风格操作符来处理变量. 3 4 5echo 6 7((a=23)) #以C风格来设置一个值,在"="两边可以有空格. 8echo"a(initialvalue)=$a" 9 10((a++)) #C风格的计算后自增. 11echo"a(aftera++)=$a" 12 13((a--)) #C风格的计算后自减. 14echo"a(aftera--)=$a" 15 16 17((++a)) #C风格的计算前自增. 18echo"a(after++a)=$a" 19 20((--a)) #C风格的计算前自减. 21echo"a(after--a)=$a" 22 23echo 24 25######################################################## 26# 注意,就像在C中一样,计算前自增自减和计算后自增自减有一点不同的的副作用 27# 28 29n=1;let--n&&echo"True"||echo"False" #False 30n=1;letn--&&echo"True"||echo"False" #True 31 32# 多谢JeroenDomburg. 33######################################################## 34 35echo 36 37((t=a<45?7:11)) #C风格的三元计算. 38echo"Ifa<45,thent=7,elset=11." 39echo"t=$t" #Yes! 40 41echo 42 43 44#----------------- 45#复活节彩蛋大礼! 46#----------------- 47# ChetRamey显然在此偷偷地隐瞒了Bash中双括号的C风格结构 48#+(实际上是从ksh中继承来的,两者非常的接近). 49# 在Bash的文档里,Ramey称((...))为shell算术计算, 50#+但它所能做的远远超出这个. 51# 不好意思,Chet,现在秘密已经被揭开了. 52 53#参考"for"和"while"循环中使用((...))结构的章节. 54 55#这个只能在Bash版本2.04以上才能工作. 56 57exit0
上一篇:嵌套循环_程序数据_shell
下一篇:$RANDOM: 产生随机整数_程序数据_shell