linux脚本case命令,linux-shell中case与select语句

一、case语句

case语句实现一种分支结构,语法如下:

caseexpr in                         #expr为表达式

parrern1)                             #若expr与pattern1匹配,注意括号

commands1                   #执行语句块commands1

;;                                    #跳出case结构

parrern2)                             #若expr与pattern2匹配,注意括号

commands2                   #执行语句块commands2

;;                                    #跳出case结构

''''                                    #可以有任意多个模式匹配块

*)                                        #若expr与上面的模式都不匹配

commands                      #执行语句块commands

;;

esac                                    #case语句必须以esac终止

说明:

1、表达式expr按照顺序匹配每个模式,一旦有一个模式匹配成功,则执行该模式后面所有命令,然后退出case.

2、如果expr没有找到匹配模式,则执行默认值“*)”后面的命令块(类似于if语句中的else块);“*)”块可以不出现。

3、所给的匹配模式“pattrer?"中可以含有通配符和逻辑或“|”,

4、除非特殊需要,否则每个命令块的最后必须有一个双分号";;",可以独占一行,或者放在语句块最后一个命令的后面。

举例:根据选择显示不同的信息#!bin/bash

#filename=what-lang-do-you-like.sh

echo "What is your preferred scriptiong language"

read -p "1)bash 2)perl 3)python 4)ruby:" lang

case $lang in

1) echo "You secected bash"    ;;

2) echo "You secected perl"    ;;

3) echo "You secected python"    ;;

4) echo "You secected ruby"    ;;

*) echo "i do not konw!"    ;;

esac

22e16920dd261aa7ece2acaaf3bbb2eb.png

二、select语句

select语句实现一种菜单循环结构,其语法如下所示:

select variable in List             #将列表中的每一个菜单项之前添加一个从1开始的序号依次呈现给用户

#显示环境变量PS3的值(其中存放了引导用户输入的提示信息),让用户选择菜单项

#用户选择的菜单序号存在变量RELAY中,对应的List菜单项内容存在variable变量中

do                                        #用户选择了一个菜单项之后进入循环体

                   #执行语句块commands

done                                     #本次循环结束,重新进入下一次菜单选择循环

说明:

1、List列表的菜单项间隔符由环境变量IFS决定

2、按数值循环排列的菜单项会显示到标准错误输出(默认为显示器)

3、用户之间按键重新显示菜单

4、与for循环类似,省略in list时等价于 in "$%*'

5、select语句是个无限循环,通常要配合case语句处理不同的的选单及退出。可以按ctrl+c退出循环,也可以在循环内用break命令退出循环或用exit命令终止脚本执行。

使用举例1,在select循环内根据菜单项的内容处理菜单#!/bin/bash

#filename=what-lang-do-you-like_menu_select.sh

clear

PS3="What is your preferred scripting language?"

select s in bash perl python ruby '(quit)'

do

case $s in

bash|perl|python|ruby)    echo "You selected $s.";;

'(quit)')                  break                ;;

*)                 echo "You selected error,retry..." ;;

esac

done

执行效果如下:

92d531629313ad41daf11ea41d645619.png

使用举例2,在select循环体内根据菜单项序号处理菜单。#!/bin/bash

#filename=what-***-do-you-want.sh

clear

PS3="What ××× do you want?"

IFS="|"

***="IPsec ×××|SSL ×××|PPTP ×××|Quit"

software="libreswan open*** pptp"

select type in $***

do

case $REPLY in

1|2|3)    echo "You selected $type,please install\" $(echo $software|cut -d' ' -f $REPLY)\"." ;;

*)    exit ;;

esac

done

使用效果如下

9d1ebc31b9b8fc706a4929d07ca90338.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值