`
天梯梦
  • 浏览: 13741286 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程

 
阅读更多

本文是Linux Shell脚本系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程

上一篇之 后,分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使用switch … case格式,但是在Shell却没有switch … case,不过别担心,Shell是支持分支语句的,只不过使用case … esac格式而已。二者在本质上是相同的。

 

一、Shell分支语句case···esac语法

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

 说明:case后为取值,值后为关键字 in,接下来是匹配的各种模式,每一模式最后必须以右括号结束。

值可以为变量或常数。

 

模式支持正则表达式,可以用以下字符:

*       任意字串
?       任意字元
[abc]   a, b, 或c三字元其中之一
[a-n]   从a到n的任一字元
|       多重选择

 

匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

;; 与其他语言中的 break 类似,意思是不执行接下来的语句而是跳到整个 case 语句的最后。

*)与default相似,如果上面没有匹配到的模式,则执行*)里的内容。

 

二、Shell分支语句case···esac使用举例

通过一个例子来学习下case…esac命令:

#!/bin/sh 
#auther:linuxdaxue.com
#date:2016-05-30
case $1 in
start | begin)
    echo "I am started!"  
    ;;
stop | end)
    echo "I am stopped!"  
    ;;
*)
    echo "Other command!"  
    ;;
esac

 

说明:这个脚本练习的是模式匹配,模式匹配支持‘|’符,有一个条件符合就会执行命令。

输出:

$./test.sh start
I am started!
$./test.sh stop
I am stopped!
$./test.sh begin
I am started!
$/test.sh hello
Other command!

 

接下来给大家演示一个通过case…esac语句产生菜单的例子:

#!/bin/bash  
#Author:linuxdaxue.com
#Date:2016-05-30
#Desc:Shell case菜单练习

clear # 清屏.  

echo "          Contact List"  
echo "          ------- ----"  
echo "Choose one of the following persons:"  
echo  
echo "[E]vans, Roland"  
echo "[J]ones, Mildred"  
echo "[S]mith, Julie"  
echo "[Z]ane, Morris"  
echo  

read person  

case "$person" in  
# 注意, 变量是被""引用的.  

"E" | "e" )  
# 接受大写或者小写输入.  
echo  
echo "Roland Evans"  
echo "4321 Floppy Dr."  
echo "Hardscrabble, CO 80753"  
echo "(303) 734-9874"  
echo "(303) 734-9892 fax"  
echo "revans@zzy.net"  
echo "Business partner & old friend"  
;;  
# 注意, 每个选项后边都要以双分号;;结尾.  

"J" | "j" )  
echo  
echo "Mildred Jones"  
echo "249 E. 7th St., Apt. 19"  
echo "New York, NY 10009"  
echo "(212) 533-2814"  
echo "(212) 533-9972 fax"  
echo "milliej@loisaida.com"  
echo "Ex-girlfriend"  
echo "Birthday: Feb. 11"  
;;  

# 后边的 Smith 和 Zane 的信息在这里就省略了.  

* )  
# 默认选项.  
# 空输入(敲回车RETURN), 也适用于这里.  
echo  
echo "Not yet in database."  
;;  

esac  

echo  

#  练习:  
#  -----  
#  修改这个脚本, 让它能够接受多个输入,  
#+ 并且能够显示多个地址.  

exit 0

 

说明:这个例子主要为大家演示了如何用case…esac语句产生菜单,让大家可以更形象、灵活的来学习case…esac语句的用法。

 

输出:

Contact List
          ------- ----
Choose one of the following persons:

[E]vans, Roland
[J]ones, Mildred
[S]mith, Julie
[Z]ane, Morris

E

Roland Evans
4321 Floppy Dr.
Hardscrabble, CO 80753
(303) 734-9874
(303) 734-9892 fax
revans@zzy.net
Business partner & old friend

 

上面是输入E参数的输出,输入S或者Z,则会输出如下:

Contact List
          ------- ----
Choose one of the following persons:

[E]vans, Roland
[J]ones, Mildred
[S]mith, Julie
[Z]ane, Morris

Z

Not yet in database.

 

好了,关于Shell中分支语句case…esac的用法就先为大家介绍到这里,case…esac是一个非常强大的命令,大家可以用其来做非常多的事情,这篇文章仅仅只是入门作用,更多的需要大家在实际使用中多多尝试,多多练习。

更多Linux Shell教程请看:Linux Shell脚本系列教程

 

原文:Linux Shell系列教程之(十三)Shell分支语句case … esac教程

上一篇:Linux Shell脚本入门教程系列之(十二)Shell until循环

下一篇:Linux Shell脚本入门教程系列之(十四) Shell Select教程

本文转自:Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    LinuxShell脚本编程实例.doc

    Linux Shell脚本编程实例 Linux Shell脚本编程实例是指使用Linux操作系统的Shell来编写脚本程序,实现自动化任务、批处理和system administration等功能。本文将通过实例讲解Linux Shell脚本编程的基本概念、语法和...

    Shell脚本-从入门到精通.ppt

    shell脚本是Linux操作系统中的一种编程语言,用于自动执行一系列命令。shell脚本文件是一个纯文本文件,可以使用任何文本编辑器编写,通常以.sh作为后缀名。 一、shell脚本的基本结构 shell脚本的基本结构包括: ...

    linux shell脚本编程学习入门

    ### Linux Shell脚本编程学习入门知识点详解 #### 一、Shell脚本编程概述 - **定义**:Shell脚本是用于Unix/Linux操作系统的一种自动化工具,通过编写一系列命令来进行任务的批量处理或自动化操作。 - **用途**:...

    shell脚本编程

    Linux中的Shell脚本编程是系统管理和自动化任务的重要工具。Shell是Linux系统中用户与内核进行交互的界面,负责解释用户输入的命令和脚本。 在Shell脚本编程中,常见的Shell种类包括ash、bash(sh)、csh(tcsh)、...

    [Linux]Shell脚本编程详解

    在Linux操作系统中,Shell脚本是一种强大的自动化工具,它允许用户通过编写一系列命令来执行复杂的任务。这篇文章将深入探讨Shell脚本编程的基础知识,包括语法、常用命令以及如何创建和运行自定义脚本。 1. Shell...

    shell脚本语言.pdf

    "shell脚本语言" Shell 简介: Shell 是一种命令语言和程序设计语言,用户可以通过 Shell 完成大部分工作。Shell 既可以交互式地解释和执行用户输入的命令,也可以定义各种变量和参数,提供了许多控制结构,包括...

    linux shell程序设计实验1

    Linux Shell程序设计是Linux系统管理与自动化任务处理的重要部分,主要使用Bash(Bourne-Again SHell)脚本来编写。...熟悉这些后,你将能够编写出功能强大、自动化程度高的Shell脚本,提升Linux系统的使用效率。

    人性化解析shell脚本,保证快速入门sh,bash,shell入门.pdf

    "人性化解析shell脚本,快速入门sh、bash、shell入门" Shell脚本是Linux操作系统中的一种编程语言,用于自动化系统管理和任务执行。本文档旨在快速入门Shell脚本,帮助读者快速掌握Shell脚本的基本知识和使用方法...

    shell脚本和case 使用相关的例子

    在IT行业中,shell脚本是Linux或Unix操作系统中不可或缺的一部分,它是一种强大的自动化工具,能够帮助用户执行一系列命令,简化日常任务。本文将探讨shell脚本中的“case”语句,以及如何通过实例来理解其用法。 ...

    Linux实验shell脚本.doc

    Linux实验shell脚本 Linux实验shell脚本是Linux系统中的一种自动化工具,使用shell脚本可以实现自动化系统管理、数据处理、文件操作等任务。在本文档中,我们将学习如何创建和执行shell脚本,了解shell脚本中变量的...

    shell脚本的常用格式及写法

    Shell脚本,全称为Bash Shell脚本,是Linux或Unix系统中的一种程序设计语言,它基于Shell命令行解释器,允许用户通过编写脚本来自动化一系列的系统操作。Shell脚本的编写对于日常的系统管理和自动化任务至关重要。...

    Linux下的shell编程入门.pdf

    从给定的文件信息来看,我们正在探讨的主题是“Linux下的shell编程入门”,这涉及到Linux操作系统中的shell脚本编写基础。下面将详细解析文件中提到的关键知识点。 ### 1. Shell编程简介 Shell编程是在Linux或类...

    Linux Shell 脚本编程总结及速查手册

    在Shell脚本中,变量的定义与赋值是基础且重要的功能之一。可以通过以下方式来定义变量: - **直接赋值**:`variable_name=value` - **带引号赋值**:`variable_name="value with spaces"` - **使用等号空格**:...

    linux系统java服务自启动shell脚本及服务cpu内存占用监控脚本

    一、Linux系统Java服务自启动shell脚本 自启动脚本主要目的是在Linux系统启动时自动启动Java服务,确保服务的高可用性。创建自启动脚本通常包括以下步骤: 1. 创建shell脚本:在系统的`/etc/init.d/`目录下创建一...

    shell脚本相关资料

    Shell脚本是Linux/Unix操作系统中的重要组成部分,它是一种基于命令行的编程语言,用于自动化系统管理和执行一系列任务。在Linux环境中,shell脚本扮演着不可或缺的角色,它们能够提高工作效率,减少手动操作,并且...

    Shell脚本日志关键字监控+告警.docx

    本文将详细介绍如何使用 Shell 脚本来监控 Linux 服务器日志,并在出现关键字异常时触发相应的动作或告警操作,通知到邮件联系人。 安装邮件服务 为了实现邮件告警功能,需要先安装邮件服务。可以使用 mailx 软件...

    LinuxShell脚本编程实例.pdf

    在Linux系统中,Shell脚本是一种强大的自动化工具,可以用于执行一系列命令、处理文件和数据。上述文件中展示了几个不同的Shell脚本实例,主要涉及以下几个关键知识点: 1. **Shebang(井号感叹号)**: 在每个脚本...

    linux shell

    3. 选择结构:`case...esac`提供多分支选择。 4. 跳转语句:`break`退出当前循环,`continue`跳过当前循环剩余部分,`exit`结束整个shell脚本。 四、Shell函数 定义和调用自定义函数,方便代码重用和模块化。例如:...

Global site tag (gtag.js) - Google Analytics