Linux shell if高级特性和case

bash shell提供了两项可在if-then语句中使用的高级特性:

  1. 用于数学表达式的双括号
  2. 用于高级字符串处理功能的双方括号

一、使用双括号
双括号命令允许你在比较过程中使用高级数学表达式。双括号命令的格式如下:

(( 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,执行完后也会退出。

posted @ 2022-09-11 15:56  shigp1  阅读(116)  评论(0)    收藏  举报