我的编程空间,编程开发者的网络收藏夹
学习永远不晚

[9-13]Shell系列3——分支结构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

[9-13]Shell系列3——分支结构

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

知识储备


  • Shell脚本中语言结构还是那3种:顺序结构、选择结构、循环结构

  • 分支结构选择结构是同一概念,依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序

  • If语句和Case语句是在shell中实现分支结构的具体表现形式,同C语言中的if和switch语句

  • 下面的语句我以结构流程图、代码实现[代码格式]、具体例子来阐述


IF单分支结构


流程图

wKioL1X_uuLwyqasAALMPJ7eTwo772.bmp

代码实现

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

wKiom1X_vNbA4GCTAAQUgCxN1fY292.bmp


IF双分支结构


流程图

wKiom1X_vr-zWjjcAAUPqK9EKM4986.bmp

代码实现    

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

wKioL1X_wjjiM9X3AAN6OHVfAVU933.bmp


IF多分支结构


流程图

wKioL1X_xZnRwFs0AAvFgMqXFhw221.bmp

代码实现

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

wKiom1X_xZjiBEs_AAVlqGYaVq8250.bmp


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多分支结构


流程图

wKioL1X_z7ejtd7nAAvRfGuWdVs731.bmp

代码实现   

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

wKioL1X_0Yey7LieAAWbWDwTxcg068.bmp


Case注意点

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

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


If和Case的执行效率


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

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

● 总结:

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

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

[9-13]Shell系列3——分支结构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

[9-13]Shell系列3——分支结构

本文旨在复习shell实现分支结构的3种if语句和case多分支结构语句,以及补充if和case的执行效率知识储备Shell脚本中语言结构还是那3种:顺序结构、选择结构、循环结构分支结构与选择结构是同一概念,依据一定的条件选择执行路径,而不
2023-01-31

好程序员Python教程系列第5讲-分支结构

好程序员Python教程系列从零开始学Python-第5讲:分支结构  应用场景  迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏
2023-06-01

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录