• 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
  • 相关阅读:
    [985] 令牌放置
    [191] 位1的个数
    [637] 二叉树的层平均值
    大数据量时 Mysql LIMIT如何正确对其进行优化(转载)
    数据库中,表一sum得出一个值,赋给表二的某个字段,为null
    安装JDK提示: 该项不适于在指定状态下使用的错误
    hibernate中多对一问题
    JSONObject基本内容(三)
    JSONObject基本内容(二)
    JSONObject基本内容(一)
  • 原文地址:https://www.cnblogs.com/shamao/p/11214079.html
Copyright © 2020-2023  润新知