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  阅读(61)  评论(0编辑  收藏  举报