bash shell提供了两项可在if-then语句中使用的高级特性:
- 用于数学表达式的双括号
- 用于高级字符串处理功能的双方括号
后面几节将会详细描述每一种特性。
1 使用双括号
双括号命令允许你在比较过程中使用高级数学表达式。test命令只能在比较中使用简单的算术操作。双括号命令提供了更多的数学符号,这些符号对于用过其他编程语言的程序员而言并不陌生。双括号命令的格式如下:
(( expression ))
expression可以是任意的数学赋值或比较表达式。除了test命令使用的标准数学运算符,表12-4列出了双括号命令中会用到的其他运算符。
表12-4 双括号命令符号
符 号
描 述
val++
后增
val–
后减
++val
先增
–val
先减
!
逻辑求反
~
位求反
**
幂运算
<<
左位移
>>
右位移
&
位布尔和
|
位布尔或
&&
逻辑和
||
逻辑或
可以在if语句中用双括号命令,也可以在脚本中的普通命令里使用来赋值。
$ cat test23.sh
#!/bin/bash
# using double parenthesis
#
val1=10
#
if (( $val1 ** 2 > 90 ))
then
(( val2 = $val1 ** 2 ))
echo "The