你会经常发现自己在尝试计算一个变量的值,在一组可能的值中寻找特定值。在这种情形下,

你不得不写出很长的if-then-else语句,就像下面这样。

$ cat test25.sh

#!/bin/bash

# looking for a possible value

#

if [ $USER = "rich" ]

then

echo "Welcome $USER"

echo "Please enjoy your visit"

elif [ $USER = "barbara" ]

then

echo "Welcome $USER"

echo "Please enjoy your visit"

elif [ $USER = "testing" ]

then

echo "Special testing account"

elif [ $USER = "jessica" ]

then

echo "Do not forget to logout when you're done"

else

echo "Sorry, you are not allowed here"

fi

$

$ ./test25.sh

Welcome rich

Please enjoy your visit

如上面的案例,我们需要做多个if判断来一一核对,代码量比较多,还容易乱,这时可以用case用法来减少代码量,

有了case命令,就不需要再写出所有的elif语句来不停地检查同一个变量的值了。case命

令会采用列表格式来检查单个变量的多个值。

#!/bin/bash
# using the case command
#
case $USER in
rich | barbara)
echo "Welcome, $USER"
echo "Please enjoy your visit";;
testing)
echo "Special testing account";;
jessica)
echo "Do not forget to log off when you're done";;
*)
echo "Sorry, you are not allowed here";;
esac

case 用法也常用于启动脚本中

#!/bin/sh

# Comments to support chkconfig on RedHat Linux
# chkconfig:
# description: A very fast and reliable Tomcat. export JAVA_HOME=/data/jdk8/ tomcat[]="/data/Tomcat/"
project="/data/www/kstore/"
module="site boss mobile third open"
webinf="/htdocs/WEB-INF/"
war="/htdocs/war/" start(){
cache for i in ${tomcat[@]}
do
${i}/bin/startup.sh
sleep
done sleep test
} stop(){
for i in ${tomcat[@]}
do
${i}/bin/shutdown.sh
rm -rf ${i}/work/Catalina/
pid=$(ps -ef | grep ${i} | grep -v grep | awk '{print $2}')
if [ "${pid}" != "" ];then
kill - ${pid}
fi sleep
done cache test
} test(){
for i in ${tomcat[@]}
do
pid=$(ps -ef | grep ${i} | grep -v grep | awk '{print $2}')
if [ "${pid}" != "" ];then
echo "${i} is running!"
else
echo "${i} may not be running!"
fi
done
} change(){
transfer(){
a=`find ~ -name "*.war" | wc -l` if [ ${a} -gt ];then
mv ${war}/*.war ${war}/backup/
mv ~/*.war ${war}
fi for i in ${module[@]}
do
b=$(ls -A ${war} | grep "${i}")
if [ "${b}" != "" ];then
echo ${i}
fi
done
} app=$(transfer) for i in ${app[@]}
do
rm -rf ${project}${i}
mkdir ${project}${i}
unzip -q ${war}/*${i}*.war -d ${project}${i}
cp -rf ${webinf} ${project}${i}
sed -i "/amq.destination/s/boss/${i}/g" ${project}/${i}/WEB-INF/classes/com/ningpai/web/config/amq.properties
done
} cache(){
sync
echo 3 > /proc/sys/vm/drop_caches
} case "$1" in
#startup tomcat
start)
start
;;
#stop tomcat
stop)
stop
;;
#restart tomcat
restart)
stop
start
;;
#reload tomcat
reload)
stop
change
start
;;
#test tomcat
status)
test
;;
#load tomcat
load)
change
start
;;
*)
echo "Use tomcat start|stop|status|restart|reload|load"
;;
esac

shell脚本之case用法的更多相关文章

  1. shell脚本中case的用法

    shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char ...

  2. Linux上shell脚本date的用法

    在shell脚本里date命令的用法: %% 一个文字的 % %a 当前locale 的星期名缩写(例如: 日,代表星期日) %A 当前locale 的星期名全称 (如:星期日) %b 当前local ...

  3. shell脚本实例-case实现jumpserver跳板机

    1,先通过ssh-keygen 生成公钥,然后将公钥推送到各个主机ssh-copy-id web1|ip 2简单的代码实现 #!/usr/bin/bash trap "" HUP ...

  4. shell脚本之case语句

    case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行 ...

  5. Linux Shell脚本编程case条件语句

    1,判断一个数字是否则在1,2,3之中. #!/bin/bash read -p "pls input a number:" n case "$n" in ) ...

  6. shell脚本实例-case 删除用户判断的小案例

    #!/usr/bin/bash read -p "Please input a username:" user id $user &>/dev/null if [ $ ...

  7. shell脚本中case select 的使用

    #!/bin/bash # case echo "1.Install PHP" echo "2.Install Mysql" echo "3.Inst ...

  8. shell脚本中case /*的作用

    如下语句 case $0 in /*) ;; *) ;; /*在这里的作用就是绝对路径的意思

  9. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

随机推荐

  1. docker安装应用

    1.docker安装oracle docker search oracle docker pull wnameless/oracle-xe-11g docker run -d -p 9090:8080 ...

  2. centos安装mysql以及授权登录用户

    CentOS第一次安装MySQL的完整步骤 目录     1.官方安装文档    2.下载 Mysql yum包    3.安转软件源    4.安装mysql服务端    5.首先启动mysql   ...

  3. java 使用面向对象方式实现录入学生信息,取出成绩最大值、最小值、平均值、对其进行排序

    题目: java 使用面向对象方式实现录入学生信息,取出成绩最大值.最小值.平均值.对其进行排序 gitup源码下载地址: https://github.com/benxiaohai8888/Java ...

  4. 2019-11-29-msbuild-项目文件常用判断条件

    title author date CreateTime categories msbuild 项目文件常用判断条件 lindexi 2019-11-29 08:36:48 +0800 2019-7- ...

  5. java面试题全集(下)

      这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试 ...

  6. 配置 http 反向代理

    [root@nginx ~]# cd /etc/nginx/ 1 [root@nginx nginx]# cp nginx.conf nginx.conf.bak #备份一个原配置文件 2 [root ...

  7. final修饰符—不可变

    final 修饰符 修饰类 不可以有子类 修饰变量 变量一旦获得初始值就不可改变,不能被重新赋值 成员变量:初始值必须有程序员显式设置,系统不会对其隐式初始化 类变量:静态初始化块 | 声明该类变量时 ...

  8. Luogu P3170 [CQOI2015]标识设计 状态压缩,轮廓线,插头DP,动态规划

    看到题目显然是插头\(dp\),但是\(n\)和\(m\)的范围似乎不是很小.我们先不考虑复杂度设一下状态试试: 一共有三个连通分量,我们按照\(1,2,3\)的顺序来表示一下.轮廓线上\(0\)代表 ...

  9. Python---项目需求分析

    一.软件工程 .软件工程:工程化方法解决软件问题 操作步骤 1.需求分析 前台:给基础用户使用的页面 后台:给操作者/admin等使用的页面系统 不是服务器前后台概念 2.小米前台 商品展示 商品详情 ...

  10. 【NOIP2017模拟6.25】小W的动漫

    题目 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的 ...