if-then的高级特征

在bash shell中提供在if-then语句中使用的高级功能:

1.双圆括号表示数学表达数

2.双方括号表示高级字符串处理函数

使用双圆括号

   双圆括号命令允许在比较中包含高级数学公式。test命令只允许在比较中进行简单的算术操作。

双圆括号命令提供更多的数学字符,这些符号是其他语言程序员习惯使用的符号。

双圆括号格式: (( expression ))

expression:可以是任何数学赋值表达式,除了test命令使用的标准数学操作符。

符号 描述 符号 描述
val++ 后增量 << 逐位左移
val-- 后减量 >> 逐位右移
++val 前增量 & 逐位布尔逻辑与
--val 前减量 | 逐位布尔逻辑或
! 逻辑否定 && 逻辑与
~ 逐位取反 || 逻辑或
** 取幂





可以在if语句中使用双圆括号命令,也可以使用普通命令在脚本中赋值:
#!/bin/bash
#using double parenthesis
val1=10
if (( $val1 ** 2 > 90 ))
  then
  (( val2 = $val1 ** 2 ))
echo "The square of $val1 is $val2"
fi
>:大于号不需要转义
[root@localhost ~]# ./test23.sh 
The square of 10 is 100
注意:在双圆括号中,不需要转义大于号!

         


使用双方括号
双方括号命令为字符串比较提供高级功能,命令格式如下:
[[ expression ]]
双方括号包围expression使用在test命令中使用的标准字符串比较。但是它还提供了一个功能,就是模式匹配
在模式匹配中,可以定义与字符串值相匹配的正则表达式
#!/bin/bash
#using pattern matching
if [[ $USER == r* ]]
  then
echo "Hello $USER"
  else
echo "Sorry ,I don't know you"
fi
r*:匹配有r的用户
[root@localhost ~]# ./test24.sh 
Hello root


你可能感兴趣的:(linux,括号)