热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell编程之case语句实战(小结)

这篇文章主要介绍了Shell编程之case语句实战(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

大家好,今天给大家带来的是Shell编程之case语句的使用!

其实case语句还是很好理解的,在shell编程中,if语句有它的语法,函数也有它的语法,那么在我们shell编程中的case语句也是有它的语法的,如下:

case 变量名 in 
  值1) 
   指令1 
  ;; 
  值2) 
   指令2 
  ;; 
  值3) 
   指令3 
  ;; 
esac 

在以上的代码中我们发现,以case开头,以esac结尾,就像我们的if语句,以if开头以fi结束时一样的。

例2:

case "找老公条件" in 
   家里有房子) 
    嫁给你... 
  ;; 
   家庭有背景) 
    嫁给你... 
  ;; 
   很努力吃苦) 
    那么我们可以先谈男女朋友.. 
  ;; 
esac 

好了接下来我们实践,其实语法就是上面的一些基本语法,那么我么在实践中来体会case到底有什么用

其实自我认为case语句更适合一些菜单选项的脚本,那么我们先用if语句写一个菜单脚本如下:

#!/bin/bash 
#!/bin/bash 
# Date: 4:42 2018-2-5 
# Mail: ywyankerp@163.com 
# Founder:  
# Describe: This is a one - button installation service script  
function CDAN(){ 
cat </dev/null 
if [ "$&#63;" -ne 0 ] 
 then 
  echo "请您输入{1|2|3}"  
  exit 1 
fi 
 
if [ "$NUM" -eq 1 ] 
  then 
   echo "小二,来一碗米饭" 
elif [ $NUM -eq 2 ] 
  then 
   echo "小二,来一碗面条" 
elif [ "$NUM" -eq 3 ] 
  then 
   echo "小二,来一锅包子" 
fi 


首先我们看到我们上面的if语句,是不是感觉有点繁琐,那么接下来我们使用case语句来实现 如下:

#!/bin/bash 
#!/bin/bash 
# Date: 4:42 2018-2-5 
# Mail: ywyankerp@163.com 
# Founder:  
# Describe: This is a one - button installation service script  
function CDAN(){ 
cat </dev/null 
if [ "$&#63;" -ne 0 ] 
 then 
  echo "请您输入{1|2|3}"  
  exit 1 
fi 
 
case $NUM in 
    1) 
     echo "小二,来一碗米饭" 
    ;; 
    2) 
     echo "小二,来一碗面条" 
    ;; 
    3) 
     echo "小二,来一锅包子" 
    ;; 
esac 


剖析时刻:

#!/bin/bash 
#!/bin/bash 
# Date: 4:42 2018-2-5 
# Mail: ywyankerp@163.com 
# Founder:  
# Describe: This is a one - button installation service script  
function CDAN(){  #定义一个CDAN的函数 
cat </dev/null     # 使用数值运算命令expr来确定用户输入的是否是数值 
if [ "$&#63;" -ne 0 ]         #如果用户输入的不是数值 
 then      #那么 
  echo "请您输入{1|2|3}"   #打印出 1 2 3  
  exit 1       #最后退出脚本 
fi        #结束if语句 
 
case $NUM in    #这里就是我们的case语句了,简单理解,在NUM这个变量中 
    1)       #如果用户输入的是1 
     echo "小二,来一碗米饭"    #那么就输出一行来一碗米饭 
    ;; 
    2)             #如果在NUM变量中用户输入的是2 
     echo "小二,来一碗面条"  #那么继续打印此内容 
    ;; 
    3)              #以此类推 
     echo "小二,来一锅包子" 
    ;; 
esac       #最后使用esac结束 

觉得不够养眼?没有关系如下图:


我们发现,在多个选项的这些脚本中呢,还是使用case语句是比较方便合适的。

那么我们掌握了基本的语法和它的一些功能,那么我们可以结合函数+case语句来完成一个菜单式的安装脚本如下:

#!/bin/bash 
# Date: 4:42 2018-2-5 
# Mail: ywyankerp@163.com 
# Founder:  
# Describe: This is a one - button installation service script  
function CDAN(){ 
cat </dev/null 
if [ "$&#63;" -ne 0 ] 
 then 
  echo "请您输入{1|2|3|4|5|6|7|8}" 
  exit 1 
fi 
 
function Nginx_server (){ 
  echo "开始安装Nginx请稍后...." 
  yum install -y gcc gcc-c++ pcre-devel zlib-devel openssl-devel &>/dev/null 
  cd $BASE_DIR && wget http://nginx.org/download/nginx-1.12.2.tar.gz &>/dev/null && useradd -M -s /sbin/nologin nginx && \ 
tar zxf nginx-1.12.2.tar.gz && cd $BASE_DIR/nginx-1.12.2/ && \  
  ./configure --prefix=/usr/local/nginx --with-http_dav_module--with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module--with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx &>/dev/null 
  if [ "$&#63;" -eq 0 ] 
   then 
    make && make install &>/dev/null 
  fi 
if [ -f /usr/local/nginx/sbin/nginx ];then 
  ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin && nginx && echo "Nginx安装成功!" 
fi 
} 
       
function Apache_server (){ 
  echo "开始安装Apache请稍后" 
  yum install httpd -y &>/dev/null 
  if [ "$&#63;" -eq 0 ] 
   then  
    echo "Apache安装成功!" 
   else 
    echo "Apache安装失败!" 
  fi 
} 
 
case $NUM in 
  1) 
   Nginx_server 
  ;; 
  2) 
   Apache_server 
  ;; 
esac 

运行结果如下:


以上脚本大家可以参考参考,很简单实现,那么接下来在来一个案例

实战2:编程Nginx启动脚本

编译安装的Nginx是没有启动脚本的,这时候我们可以选择自己写一个,在这里我用我的思路给大家解释整个过程虽然不是很规范,希望还是能够帮助到你如下:

#!/bin/bash 
BASE_DIR=/usr/local/nginx/sbin/ 
PID=/usr/local/nginx/logs/nginx.pid 
#no1.判断是否root用户登录 
if [ "$UID" -ne 0 ] 
 then 
  echo "请您使用root用户登录!!!" 
 exit 1 
fi 
. /etc/init.d/functions  
#判断用户输入的传参个数 
if [ "$#" -ne 1 ] 
  then 
    echo "/bin/bash $0 {start|stop|restart}" 
  exit 1 
fi 
 
#编写启动Nginx函数 
function start (){ 
  if [ `netstat -anput | grep nginx | wc -l` -eq 0 ] 
    then 
     $BASE_DIR/nginx 
  fi 
    if [ "$&#63;" -eq 0 ] 
     then 
      action "Nginx启动成功!" /bin/true 
     else 
      action "Nginx启动失败!" /bin/false 
    fi 
} 
 
#编写停止Nginx函数 
function stop (){ 
  if [ `netstat -anput | grep nginx | wc -l` -ne 0 ] 
    then 
     $BASE_DIR/nginx -s stop 
  fi 
    if [ "$&#63;" -eq 0 ] 
     then 
      action "Nginx停止成功!" /bin/true 
     else 
      action "Nginx停止失败!" /bin/false 
    fi 
} 
 
#编写case语句 使用特殊的位置变量$1来判断用户输入的内容 
case $1 in 
  start) 
     start 
  ;; 
  stop) 
     stop 
  ;; 
    restart) 
     stop 
     start 
  ;; 
esac 

运行如下:


一张图更清晰解释


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
author-avatar
王言
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有