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

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

$ cat test25.sh#!/bin/bash# looking for a possible value#if [ $USER = "rich" ]thenecho "Welcome $USER"echo "Please enjoy your visit"elif [ $USER = "barbara" ]thenecho "Welcome $USER"echo "Please enjoy your visit"elif [ $USER = "testing" ]thenecho "Special testing account"elif [ $USER = "jessica" ]thenecho "Do not forget to logout when you're done"elseecho "Sorry, you are not allowed here"fi$$ ./test25.shWelcome richPlease 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: 2345 80 50
# description: A very fast and reliable Tomcat.export JAVA_HOME=/data/jdk8/tomcat[1]="/data/Tomcat/"
project="/data/www/kstore/"
module="site boss mobile third open"
webinf="/htdocs/WEB-INF/"
war="/htdocs/war/"start(){cachefor i in ${tomcat[@]}do ${i}/bin/startup.shsleep 60donesleep 60test
}stop(){for i in ${tomcat[@]}do ${i}/bin/shutdown.shrm -rf ${i}/work/Catalina/pid=$(ps -ef | grep ${i} | grep -v grep | awk '{print $2}')if [ "${pid}" != "" ];thenkill -9 ${pid}fisleep 5donecachetest
}test(){for i in ${tomcat[@]}dopid=$(ps -ef | grep ${i} | grep -v grep | awk '{print $2}')if [ "${pid}" != "" ];thenecho "${i} is running!"else echo "${i} may not be running!"fi done
}change(){transfer(){a=`find ~ -name "*.war" | wc -l`if [ ${a} -gt 0 ];thenmv ${war}/*.war ${war}/backup/mv ~/*.war ${war}fi    for i in ${module[@]}dob=$(ls -A ${war} | grep "${i}")if [ "${b}" != "" ];thenecho ${i}fidone}app=$(transfer)for i in ${app[@]}dorm -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.propertiesdone
}cache(){syncecho 3 > /proc/sys/vm/drop_caches
}case "$1" in#startup tomcatstart)start;;#stop tomcatstop)stop;;#restart tomcatrestart)stopstart;;#reload tomcatreload)stopchangestart;;#test tomcat status)test;;#load tomcat load)changestart;;*)echo "Use tomcat start|stop|status|restart|reload|load";;
esac

View Code

转载于:https://www.cnblogs.com/python-cat/p/10861780.html

shell脚本之case用法相关推荐

  1. Shell脚本中case的使用

    shell脚本中case的使用 shell脚本中case语句的使用 case语句的使用规范如下: case $变量名 in "值 1") 如果变量的值等于值 1,则执行程语句1 ; ...

  2. shell脚本之echo用法

    shell脚本之echo用法 1.echo常见转义符号 符号 功能描述 \b 退格键(backspace) \f 换行但光标仍停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首但不换行 \ ...

  3. shell脚本中的$用法

    shell脚本中的$用法 变量 含义 $0 shell脚本的文件名 $1 ~ $n 添加到shell脚本中的各参数: 即执行shell脚本时后跟的内容: $1为第1参数,$2为第2参数 $? shel ...

  4. shell脚本常用语句用法笔记

    脚本基本语句用法笔记 grep -i 查询时不区分大小写 -n打印匹配的行号 -v 打印不匹配的行 -AX包括每次匹配之后X行 -BX包括每次匹配之后X行 cat /etc/passwd |grep ...

  5. Shell脚本中$的用法

    2019独角兽企业重金招聘Python工程师标准>>> $0: 脚本名称,相对路径还是绝对路径要看调用的方式.如果是在父目录中,./dollarTest.sh调用,那么$0就是 ./ ...

  6. shell脚本的一些用法笔记

    1.在一般命令窗口输入的命令直接拷贝到脚本文件中就可以执行. 2.判断文件或文件夹是否存在.具有执行权力等.[改写自网络] #!/bin/shNovaPath="/var/log/httpd ...

  7. Linux疑难杂症解决方案100篇(五)-SHELL脚本中case语句的多种使用场景

    目录 掌握case语句的基本语法结构 掌握函数的定义及调用 掌握常用的正则表达式元字符含义 一.case语句 case语句为多重匹配语句 如果匹配成功,执行相匹配的命令 1. 语法结构 说明:patt ...

  8. shell脚本——sed详细用法

    sed详细用法 sed的作用 sed使用方法介绍 命令行格式 举例说明 对文件进行增.删.改.查操作 增加文件内容 对文件进行搜索替换操作 其他命令 其他选项 sed结合正则使用 补充扩展总结 sed ...

  9. shell脚本中if用法

    目录 IF使用基础 单分支语句结构 双分支语句结构 多分支语句结构 条件表达式 文件表达式 数字表达式 字符串表达式 && ||使用 test与[ ] [ ] 与[[ ]] IF使用基 ...

最新文章

  1. SBIO | 西农韦革宏组-大豆土壤细菌门间负向互作影响群落的动态变化和功能
  2. java-线程池序号一直增长
  3. 「每周CV论文推荐」 初学深度学习人脸属性分析必读的文章
  4. 基于Redis的分布式锁到底安全吗(上)?
  5. BZOJ-1875-HH去散步-SDOI2009-矩阵乘法
  6. JSON学习笔记(二)- 对象
  7. ROS小白——软件安装(1)
  8. 大年初一连夜带娃改bug:CTO把代码写成这鬼样子,被害惨了!
  9. 26岁,2020 - 观《人生七年》
  10. 使用HTML,CSS,JS写出模拟前端易车网页面
  11. python 标贝 模拟人声/语音克隆/语音复刻(API)体验
  12. cocos2d-x 植入广告(一) 百度横屏、插屏广告
  13. [elixir! #0015][译] 学习 GenStage by Joseph Kain
  14. [electron]Electron安装报错connect ETIMEDOUT
  15. 河海大学计算机辅助,黄瑞
  16. ASMEDIA祥硕 PCIe与SATA控制芯片
  17. Java Callable接口应用举例
  18. xilinx_Recovery/Removal
  19. 什么是数字化?为什么需要数字化?
  20. 邓应海:美联储缩表预期升温黄金下挫!最新黄金走势分析

热门文章

  1. vue2+webpack2实现饿了么移动端商家页面
  2. IP-Address TextBox
  3. HTML5 Audio标签方法和函数API介绍
  4. java 动态数组的应用
  5. 音视频处理中的硬压缩与软压缩
  6. 欧洲超高速网比宽带快万倍 几秒下载一部电影
  7. CF里面的资源载入问题
  8. Redis 4.0.X版本reshard出现错误的解决办法
  9. 基于 Redis 的分布式锁到底安全吗?
  10. Resharper 检测所有NullReferenceExceptions(空指针)