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字符串处理.文本处理以及各类命令及函数用法 ...
随机推荐
- [转载]关于机器上已安装CUDA,但在anaconda下tensorflow出现cudaGetDevice() failed问题的解决
机器已经安装了CUDA 9.1,驱动为390.58,我补装了对应的cudnn,并且测试通过,但是在anaconda环境下,用conda install tensorflow-gpu=1.12后,运行s ...
- 使用Vim打开十六进制的文件
So Easy 这里使用打开 Hello.class 文件为例 首先使用 vim -b Hello.class 打开文件,然后在 Vim 的命令模式下输入 :%!xxd 回车即可看见文件内容. 效果: ...
- window环境下,php+sphinx+coreseek实现简单的中文全文搜索
就以我个人理解来说,sphinx其实是介于客户端和mysql之间的一个索引表,把数据库的没一条记录假设为文档,那么这个索引表其实保存的就是这条记录的关键词及其对应的文档id 1.sphinx的安装 下 ...
- 6U VPX 加固智能计算异构服务器
6U VPX 加固智能计算异构服务器 北京太速科技有限公司在线客服:QQ:448468544 公司网站:www.orihard.com联系电话:15084122580
- 我所了解的https
http大家多少都有些了解,毕竟要上网的话是肯定会接触到它的.http有个很明显的缺点,就是传输是明文的,很不安全.针对这个情况,就推出了https,也就是http+ssl/tls. 对于明文不安全的 ...
- java数据结构03
1.求二叉树的深度 https://www.cnblogs.com/xudong-bupt/p/4036190.html class TreeNode { char val; TreeNode lef ...
- 摘抄 <关于 作为>
出路在哪里?出路在于思路! 其实,没有钱.没有经验.没有阅历.没有社会关系,这些都不可怕.没有钱,可以通过辛勤劳动去赚:没有经验,可以通过实践操作去总结:没有阅历,可以一步一步去积累:没有社会关系,可 ...
- 一、Linux 设备驱动介绍及开发环境搭建(续)
1.2.6 uboot 编译安装 嵌入式 bootloader 的功能: 功能类似于 PC 的 BIOS.硬件检测是否正常 加载操作系统镜像到 RAM 设置不同的启动方式 常见的启动方式: NOR/N ...
- outlook 使用临时邮箱 使用旧数据
控制面板-->邮件32位 显示配置文件 删除再添加 具体可参考 https://blog.csdn.net/liuyukuan/article/details/80043840 偷懒,图片从网上 ...
- ios银行卡号加入* 并四个一个空格
+(NSString *)getNewBankNumWitOldBankNum:(NSString *)bankNum{ NSMutableString *mutableStr; if ( ...