[9-13]Shell系列3——分支结构if与case语句

本文旨在复习shell实现分支结构的3种if语句和case多分支结构语句,以及补充if和case的执行效率

知识储备


  • Shell脚本中语言结构还是那3种:顺序结构、选择结构、循环结构
  • 分支结构与选择结构是同一概念,依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序
  • If语句和Case语句是在shell中实现分支结构的具体表现形式,同C语言中的if和switch语句
  • 下面的语句我以结构流程图、代码实现[代码格式]、具体例子来阐述

If单分支结构



流程图

代码实现


1
2
3
4
5


if [ expression ];then
    statement1
    statement2
    ......
fi

例:如果当前年份是2015就显示"你要好好学习了!"

请注意[ expression ]表达式前后有空格!否则语法错误


1
2
3
4
5


#!/bin/bash

if [ $(date +%Y) -eq 2015 ];then
        echo "You should study hard!"
fi

IF双分支结构



流程图

代码实现


1
2
3
4
5
6
7


if [ expreesion ];then
    statment1
    ......
else
    statement2
    ......
fi

例:读取用户输入的两个数,比较输出大数


1
2
3
4
5
6
7
8


#!/bin/bash

read -p "Enter 2 Number: " a b
if [ $a -ge $b ];then
    echo "$a"
else
    echo "$b"
fi

IF多分支结构



流程图

代码实现


1
2
3
4
5
6
7
8
9


if [ expression1 ];then
    statement1
elif [ expression2 ];then
    statement2
elif [ expression3 ];then
    statement3
else
    statment4
fi

例:输入考试分数,90分[含]以上为A等,80-90为B等,60-80为C等,60以下为D等


1
2
3
4
5
6
7
8
9
10
11
12


#!/bin/bash

read -p "Enter your Score: " score
if [ $score -ge 90 ];then
    echo "Grade A"
elif [ $score -ge 80 ];then 
    echo "Grade B"
elif [ $score -ge 60 ];then
    echo "Grade C"
else 
    echo "Grade D"
fi

IF注意点

● 判断条件可以使用[ expression ]和[[ expression ]]两种,效果通常一致但有特殊情况,[[ ]]是关键字,对于字符串判断更好,建议都使用[[ ]]这种

● [[ ]]中的判断条件可以使用逻辑运算将多个expression组合起来,比如


1
2
3
4
5
6
7
8
9


#当且仅当满足exp1和exp2时候才会执行command1
if [ expression1 -a expression2 ];then
    command1
fi

#常用的逻辑运算符
    -a 逻辑与
    -o 逻辑或
    -! 非

● 上面介绍了If语句实现分支的3种结构,If语句有2种写法


1
2
3
4
5
6
7
8
9
10


#形式一
if [ expression ];then
    command1
fi

#形式二
if [ expression ]
then
    command1
fi

Case多分支结构



流程图

代码实现


1
2
3
4
5
6
7
8
9
10
11
12
13
14


case 值 in
模式1)
    command1
    ......
    ;;
模式2)
    command1
    ......
    ;;
*)
    command1
    ......
    ;;
esac

例:用户输入数字1-3中的一个,若存在则返回该数字,否则报错


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


#!/bin/bash

read -p "Enter a Number 1-3: " num
case $num in
1)
    echo "1"
    ;;
2)
    echo "2"
    ;;
3) 
    echo "3"
    ;;
*)
    echo "Please Be sure the number from 1-3"
    ;;
esac

Case注意点

● 每一个case分支,即模式N中包含的若干指令,最后一定要以" ;; "标识该模式匹配执行结束

● 以case始,以esac终。 ---> 正好单词的倒写

If和Case的执行效率



● 通常两者区别不大,可代替使用,但是执行效率在分支众多的时候还是有区别的

● 计算机在处理Case分支时,会生成跳转表,根据变量的取值跳转到合适的分支,执行完毕 Over

● 在处理If分支的时,跳转次数不定的,是按照顺序结构一条一条判定来跳转的,比如输入成绩显示Grade那个例子而言,如果输入是95那么不用跳转1次搞定,如果是45分则需要多次跳转

● 总结:

在选择分支较多时,选用case...esac结构会提高程序的效率,但不足在于只能处理字符或者数字类型的变量,

if...else结构更加灵活一些,if...else结构可以用于判断表达式是否成立,比如if(a+b>c),if...else的应用范围更广。

时间: 2024-07-30 06:10:06

[9-13]Shell系列3——分支结构if与case语句的相关文章

2个简单shell脚本(if,while,case语句)

实验要求: 1.编写一个名为sum.sh的脚本,提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和 2.编写一个名为tar.sh的脚本,用来解压.tar.gz或.tar.bz2格式的压缩文件,要求采用case语句 实验步骤: (一) vi sum.sh #!/bin/bash # this is sum while :      #循环条件为真,等同于while true,如果没有exit 0或者break 则一直执行循环 do read -p  "请输入一个1-100的整数:

iOS-C_Day4___分支结构

2015.1.22 //单分支结构 //if(条件表达式) //{ //    执行语句; //} /*int main(int argc, const char * argv[]) { int score; scanf("%d",&score); //纠错处理 if (score<0||score>100) { return -1; } if (score >=90) { printf("优秀\n"); return 0; } if (s

分支结构

// // main.c // 分支结构 // // Created by zhangxueming on 15/5/28. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #include <stdio.h> //但分支结构 //if(条件表达式) //{ // 语句列表; //} //条件表达式为真, 则执行语句列表, 否则不执行 //int main(int argc, const char * argv[]) {

Java语言之分支结构

1 流程控制语句 1.1 什么是流程控制语句 可以控制程序的执行流程 1.2 流程控制语句的分类 顺序结构 选择结构 循环结构 2 顺序结构 从上往下,依次进行. 3 分支结构 3.1 分支结构的分类 if语句 switch语句 3.2 if语句的格式 格式1 class IfStruct1{ public static void main(String[] args) { if(布尔表达式){ //语句体 } } } 格式2 class IfStruct2{ public static voi

Python-程序的分支结构

---恢复内容开始--- 1.单分支结构 if  <条件>: <语句块> 2.二分支结构 if <条件>:                     紧凑形式,适用于简单表达式的二分支结构        guess =eval(input()) <语句块1>                  <表达式1>if<条件> else <表达式2>                     print("猜{}了"

二、分支结构

1. 前期准备--如何判断真假 在 C 语言中,表达式的值为 0,表示逻辑"假"(false),表达式的值为非 0,表示逻辑"真"(true). 常见的运算符 算术运算符:$ +, -, *, /, %, ++, -- $ 关系运算符:$ ==, !=, >, <, >=, <= $ 逻辑运算符:&&, ||, ! 位运算符:&, |, ^ 赋值运算符:$ = $ 2. if 语句 if 语句有三种方式: 单分支结构

[python第三课]分支结构

print("3.第三章:分支结构\n(1)if语句的使用\nif 条件:\n\t语句1\nelse\n\t语句2\n含义:如果条件对,则执行语句1,如果条件不对,则执行语句2\n") 原文地址:https://www.cnblogs.com/XiaoHongLactasoy/p/12610066.html

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

选择执行结构: if语句单分支结构:如果条件为真,则执行then后的命令,否则,不做任何操作: if CONDITION :then STATEMENT fi 或 if CONDITION ; then STATEMENT1 STATEMENT2 ... fi 注意:想要执行then后面的STATEMENTS,前提条件是CONDITION部分为真: if语句的双分支结构:如果条件为真,就执行then后面的命令:否则就执行else后面的命令: if CONDITION ; then STATEME

shell条件-循环-分支-函数

shell流程控制  ( if  结构     循环结构    分支结构)                       控制脚本的执行过程                       流程控制彼此可以互相嵌套使用,也可以自己嵌套自己                       根据条件的条件判断结果执行-----------------------------------------------------if结构 单分支 if  条件判断;then    执行的代码    ......fi i