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

你不得不写出很长的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. mybatis动态sql详情

    mybatis动态拼装sql详情 MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choos ...

  2. 【总结】Android 应用测试总结

    前提 所有的功能分支已完成 启动: 1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他 ...

  3. laravel5.8 Auth::guide

    // 使用下面这个命令Laravel会自动为我们生成Auth路由和认证模块.跟着代码往下解读. php artisan make:auth // Http/Controllers/Auth/Login ...

  4. GitHub源码攻击事件

    黑客擦除了微软多达392个代码存储库,并提出勒索要求.此前,黑客攻击了包含微软在内的大批受害者的Git存储库,删除了所有源代码和最近提交的内容,并留下了支持比特币支付的赎金票据. 勒索信息如下: “要 ...

  5. SpringBoot02——A Simple SpringBoot Project&Hot Deployment

    1.简单的Controller映射 1.新建一个controller包,包一定在启动器的下一层级 2.可以在application.properties中进行调整端口和context-path参数 s ...

  6. HelloWorld的解析

    public class HelloWorld { public static void main(String[] args) { System.out.println("你好,世界!&q ...

  7. docker安装踩坑记录

    .docker安装包安装很顺利, yum安装安装源在官网或镜像网站下载, fedora/centos分别下载不同的, 在/etc/yum.repos.d/doccker-ce.repo, 把网址改为镜 ...

  8. day_06 猜年龄游戏,三级菜单 ,求1 - 2 + 3 - 4 + 5...99的所有数的和(课后作业)

    1.猜年龄游戏: 要求: 允许用户最多尝试3次 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 如果猜对了,有三次选择奖励 ...

  9. iOS 自定义NavigationBar右侧按钮rightBarButtonItem

    自定义右侧的一个按钮 UIBarButtonItem *myButton = [[UIBarButtonItem alloc] initWithTitle:@"主页" style: ...

  10. vertical-greenplum

    https://github.com/sumitchawla/docker-vertica You can either pull the image from Docker Registry usi ...