linux 中多分支语句例子,Linux Shell系列教程之(十三)Shell分支语句case … esac教程 | Linux大学...

摘要

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

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

317c7603f818c8147ffcbbb4d58f3dc6.png

一、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 instart|begin)echo "I am started!";;

stop|end)echo "I am stopped!";;*)echo "Other command!";;esac

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

输出:

$./test.shstart

I am started!$./test.shstop

I am stopped!$./test.shbegin

I am started!$/test.shhello

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"

echoread personcase "$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# 练习:

#-----# 修改这个脚本, 让它能够接受多个输入,

#+并且能够显示多个地址.

exit0

说明:这个例子主要为大家演示了如何用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 Evans4321Floppy Dr.

Hardscrabble, CO80753(303) 734-9874(303) 734-9892fax

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 yetin database.

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值