LinuxShell脚本——选择结构

Posted shamao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinuxShell脚本——选择结构相关的知识,希望对你有一定的参考价值。

LinuxShell脚本——选择结构

摘要:本文主要学习了Shell脚本中的选择结构。

if-else语句

基本语法

最简单的用法就是只使用if语句,它的语法格式为:

1 if 条件
2 then
3     命令
4 fi

如果将if和then写在一行,则需要在then前面添加“;”:

1 if 条件; then
2     命令
3 fi

如果有两个分支,就可以使用if-else语句,它的格式为:

1 if 条件
2 then
3     命令1
4 else
5     命令2
6 fi

Shell支持任意数目的分支,当分支比较多时,可以使用if-elif-else-结构,它的格式为:

 1 if 条件1
 2 then
 3     命令1
 4 elif 条件2
 5 then
 6     命令2
 7 elif 条件3
 8 then
 9     命令3
10 ...
11 else
12     命令n
13 fi

使用举例

最简单的使用案例,只有一个条件和一个命令:

1 #!/bin/bash
2 read a
3 read b
4 if (( $a == $b ))
5 then
6     echo "a和b相等"
7 fi

根据条件执行不同的命令:

1 #!/bin/bash
2 read a
3 read b
4 if (( $a == $b ))
5 then
6     echo "a和b相等"
7 else
8     echo "a和b不相等"
9 fi

当有多个条件需要判断时:

 1 #!/bin/bash
 2 read a
 3 if (( $a > 90 ))
 4 then
 5     echo "优秀"
 6 elif (( $a > 80 ))
 7 then
 8     echo "良好"
 9 elif (( $a > 70 ))
10 then
11     echo "中等"
12 elif (( $a > 60 ))
13 then
14     echo "及格"
15 else
16     echo "不及格"
17 fi

case-in语句

基本语法

表达式既可以是一个变量、一个数字、一个字符串,也可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到确定的值就可以。

条件可以是一个数字、一个字符串,甚至是一个简单的正则表达式。

case会将表达式的值与多个条件逐个进行匹配:

1 如果表达式的值和某个条件匹配成功,就会执行这个条件后面对应的所有语句,直到遇见双分号;;才停止;然后整个case语句就执行完了,程序会跳出case语句,执行esac后面的其它语句。
2 如果表达式的值没有匹配到任何一个条件,那么就执行*)后面的语句(符号“*”表示其它所有值),直到遇见双分号;;或者esac才结束。

语法格式如下:

 1 case 表达式 in
 2     条件1)
 3         命令1
 4         ;;
 5     条件2)
 6         命令2
 7         ;;
 8     条件3)
 9         命令3
10         ;;
11     ...
12     *)
13         命令n
14 esac

支持的正则表达式

case-in的条件部分支持简单的正则表达式,具体来说,可以使用以下几种格式:

1 *:表示任意字符串。
2 [abc]:表示a、b、c三个字符中的任意一个。比如,[15ZH]表示1、5、Z、H四个字符中的任意一个。
3 [m-n]:表示从m到n的任意一个字符。比如,[0-9]表示任意一个数字,[0-9a-zA-Z]表示字母或数字。
4 |:表示多重选择,类似逻辑运算中的或运算。比如,abc|xyz表示匹配字符串“abc”或者“xyz”。

使用举例

 1 #!/bin/bash
 2 read a
 3 case $a in
 4     90)
 5         "优秀";;
 6     80)
 7         "良好";;
 8     70)
 9         "一般";;
10     60)
11         echo "及格";;
12     *)
13         echo "不及格"
14 esac

以上是关于LinuxShell脚本——选择结构的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell脚本流程控制

SQLServer导出表结构和数据脚本

SQLServer导出表结构和数据脚本

shell脚本编程的选择分支结构

玩转Bash脚本:选择结构之case

怎么导出Sql Server数据库表结构和数据的脚本