Linux shell if高级特性和case
bash shell提供了两项可在if-then语句中使用的高级特性:
- 用于数学表达式的双括号
- 用于高级字符串处理功能的双方括号
一、使用双括号
双括号命令允许你在比较过程中使用高级数学表达式。双括号命令的格式如下:
(( expression ))
例子:
#!/bin/bash
var=10
if (( $var ** 2 > 90 ))
then
(( var2 = $var ** 2 ))
echo "The square of $var is $var2"
fi
支持的运算符:
var++ 自增
++var 先增
var-- 自减
--var 先减
! 逻辑取反
~ 位取反
** 幂运算
<< 左移
>> 右移
& 位相与
| 位相或
&& 逻辑相与
|| 逻辑相或
二、使用双方括号
双方括号命令提供了针对字符串比较的高级特性。双方括号里的 expression使用了test命令中采用的标准字符串比较,还提供了模式匹配。双方括号命令的格式如下:
[[ expression ]]
例子:
#!/bin/bash
if [[ $USER == s* ]]; then
echo "hello,$USER"
else
echo "Sorry,I do not know you"
fi
三、case
#!/bin/bash
var=$1
case $var in
1)
echo $var
break;;
2 | 3)
(( va = $var * 2 ))
echo $va;;
4)
echo $var
break;;
*)
echo "no known"
esac
每个分支以;;结尾
从输出结果得出若每个分支没有break,执行完后也会退出。