shell脚本之case用法
你会经常发现自己在尝试计算一个变量的值,在一组可能的值中寻找特定值。在这种情形下,
你不得不写出很长的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用法的更多相关文章
- shell脚本中case的用法
shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char ...
- Linux上shell脚本date的用法
在shell脚本里date命令的用法: %% 一个文字的 % %a 当前locale 的星期名缩写(例如: 日,代表星期日) %A 当前locale 的星期名全称 (如:星期日) %b 当前local ...
- shell脚本实例-case实现jumpserver跳板机
1,先通过ssh-keygen 生成公钥,然后将公钥推送到各个主机ssh-copy-id web1|ip 2简单的代码实现 #!/usr/bin/bash trap "" HUP ...
- shell脚本之case语句
case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行 ...
- Linux Shell脚本编程case条件语句
1,判断一个数字是否则在1,2,3之中. #!/bin/bash read -p "pls input a number:" n case "$n" in ) ...
- shell脚本实例-case 删除用户判断的小案例
#!/usr/bin/bash read -p "Please input a username:" user id $user &>/dev/null if [ $ ...
- shell脚本中case select 的使用
#!/bin/bash # case echo "1.Install PHP" echo "2.Install Mysql" echo "3.Inst ...
- shell脚本中case /*的作用
如下语句 case $0 in /*) ;; *) ;; /*在这里的作用就是绝对路径的意思
- Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)
Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...
随机推荐
- JavaSE--类与对象
一.类 类是具有相同特性(数据元素)和行为(功能)的对象的抽象就是类.因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型.类具有属性,它是对象的状态的抽象,用数 ...
- npm学习(九)之README.md文件
包括文档(readme.md) npm建议您包含一个readme文件来记录您的包.自述文件必须有文件名readme.md.文件扩展名.md表示该文件是一个标记(markdown)文件.当有人发现您的包 ...
- git 版本回退方法
ORIG_HEAD 某些操作,例如 merage / reset 会把 merge 之前的 HEAD 保存到 ORIG_HEAD 中,以便在 merge 之后可以使用 ORIG_HEAD 来回滚到合并 ...
- Echarts-主题切换
从网上搜索了相关的方法,是主题之前的切换,但是用的是下拉框类型的,也可以设置div样式,参考官网那种 设置一个div,通过三个图片的点击效果实现切换主题的功能 我用的jQuery和Echarts是cd ...
- Maven项目构建利器05——Maven的生命周期
Maven各个构建环节执行的顺序: 不能打乱顺序, 必须按照既定的正确顺序(编译,测试.打包.部署)来执行Maven的核心程序中定义了抽象的生命周期, 生命周期中各个阶段的具体任务是由插件来完成的,可 ...
- PAT Basic 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守数. 本题就请你编写程序判断一个给定的 ...
- Django学习系列5:为视图编写单元测试
打开lists/tests.py编写 """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test i ...
- LAMP系统优化
LAMP系统优化 2011-03-18 10:23 度哥 互联网 字号:T | T LAMP(Linux+Apache+Mysql+Perl/PHP/Python)常用来搭建动态网站或者服务器的开源软 ...
- Python 时间序列
Python - 时间处理模块 datetime - 常用模块 官方文档 time calendar
- redis优雅的批量删除key
redis优雅的批量删除key 近期在处理redis的故障中,发现需要删除大量的历史数据(也是bigkeys),好在符合正则表达式.要不然就很痛苦,这也体现了在设计key的时候遵循规范带来的维护好处之 ...