Linux云计算 |【第二阶段】SHELL-DAY3

主要内容:

case语法结构及特点(对Nginx的应用示例)、函数及中断控制(break、continue、exit)、字符串处理(截取、替换、删除、变量初始值定义)

  • 补充:grep选项[-q]功能,不输出查询结果,类似&> /dev/null
  • 补充:wait命令的作用是等待所有后台进程都结束才结束脚本

一、case分支结构

case 分支结构是一种在编程中常用的控制结构,用于根据变量的值执行不同的代码块。

特点:case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作;如果没有任何值能够匹配,就执行预先设置的默认命令序列(检查变量的实际取值,如果与预设的值相匹配,则执行对应的操作)

case分支的执行流程

  • 语法格式:
#!/bin/bash

# 提示用户输入
echo "Enter a value:"
read input_value

# 使用 case 语句进行分支选择
case $input_value in
    pattern1)
        # 匹配 pattern1 时执行的代码
        echo "Input matches pattern1";;
    pattern2)
        # 匹配 pattern2 时执行的代码
        echo "Input matches pattern2";;
    pattern3|pattern4)
        # 匹配 pattern3 或 pattern4 时执行的代码
        echo "Input matches pattern3 or pattern4";;
    *)
        # 默认情况,即不匹配上述任何模式时执行的代码
        echo "Input does not match any pattern";;
esac

解释说明:

echo "Enter a value:":      //提示用户输入一个值
read input_value:      //读取用户输入并存储在变量 input_value 中


case $input_value in:      //开始 case 语句,根据 input_value 的值进行分支选择
pattern1):      //如果 input_value 匹配 pattern1,则执行相应代码块
pattern2):      //如果 input_value 匹配 pattern2,则执行相应代码块
pattern3|pattern4):      //如果 input_value 匹配 pattern3 或 pattern4,则执行相应代码块
*):      //默认情况,即 input_value 不匹配上述任何模式时执行代码块
;;:      //每个分支的代码块结束时使用 ;; 表示结束
esac:      //case 语句的结束标志

示例:

#!/bin/bash

# 提示用户输入
echo "Enter a value:"
read input_value

# 使用 case 语句进行分支选择
case $input_value in
    pattern1)   # 匹配 pattern1 时执行的代码
        echo "Input matches pattern1";;
    pattern2)   # 匹配 pattern2 时执行的代码
        echo "Input matches pattern2";;
    pattern3|pattern4)   # 匹配 pattern3 或 pattern4 时执行的代码
        echo "Input matches pattern3 or pattern4";;
    *)   # 默认情况,即不匹配上述任何模式时执行的代码
        echo "Input does not match any pattern";;
esac

例如:

[root@svr7 opt]# vim test03.sh
#!/bin/bash
case $1 in
1)
  echo abc;;
2)
  echo xyz;;
*)
  echo "a|b"
esac

# 测试:
[root@svr7 opt]# bash test03.sh 1
abc
[root@svr7 opt]# bash test03.sh 2
xyz
[root@svr7 opt]# bash test03.sh 3
a|b

例如:

[root@svr7 opt]# vim test04.sh
#!/bin/bash
case $1 in
t)
  touch $2;;
m)
  mkdir $2;;
r)
  rm -rf $2;;
*)
  echo "t|m|r"
esac

# 测试:
[root@svr7 opt]# bash test04.sh t AJ.txt
[root@svr7 opt]# ls
AJ.txt
[root@svr7 opt]# bash test04.sh m AnJ
[root@svr7 opt]# ls
AJ.txt  AnJ
[root@svr7 opt]# bash test04.sh r AnJ/
[root@svr7 opt]# ls
AJ.txt
[root@svr7 opt]# bash test04.sh zz
t|m|r

案例:脚本要求能使用redhat、fedora作为控制参数,控制参数通过位置变量$1传入:

  • 当用户输入redhat参数,脚本返回fedora;
  • 当用户输入fedora参数,脚本返回redhat;
  • 当用户输入其他参数,则提示错误信息;
[root@svr5 ~]# vim test.sh
#!/bin/bash
case $1 in
redhat)
    echo "fedora";;
fedora)
    echo "redhat";;
*)                     //默认输出脚本用法
    echo "用法: $0 {redhat|fedora}"
esac

# 测试:
[root@svr5 ~]# chmod +x test.sh
[root@svr5 ~]# ./test.sh     //未提供参数,或提供参数无法识别时,提示正确用法
用法: ./test.sh {redhat|fedora}
[root@svr5 ~]# ./test.sh redhat    //确认脚本可以响应redhat控制参数
fedora
[root@svr5 ~]# ./test.sh fedora    //确认脚本可以响应fedora控制参数
redhat

案例:编写case脚本实现一键启停Nginx服务器

源码安装Nginx需要提前安装依赖包软件:gcc,make,openssl-devel,pcre-devel

步骤1:将lnmp_soft.tar.gz远程拷贝到工作机192.168.4.7

[root@localhost 桌面]# cd /linux-soft/2/
[root@localhost 2]# scp lnmp_soft.tar.gz root@192.168.4.7:/
root@192.168.4.7's password:
lnmp_soft.tar.gz                    100%   87MB 159.3MB/s   00:00   

步骤2:工作机检查lnmp_soft.tar.gz并拷贝到/opt目录下

[root@svr7 /]# tar -xf lnmp_soft.tar.gz
[root@svr7 /]# ls lnmp_soft
apache-tomcat-8.0.30.tar.gz  nginx-1.17.6.tar.gz   vpn
...
[root@svr7 /]# cp lnmp_soft/nginx-1.17.6.tar.gz /opt/
[root@svr7 /]# ls /opt/
nginx-1.17.6.tar.gz

步骤3:编写脚本内容:

[root@svr7 opt]# vim test05.sh     //编写脚本
#!/bin/bash
yum -y install gcc make pcre-devel openssl-devel    //安装依赖包
tar -xf nginx-1.17.6.tar.gz    //在/opt目录下解压tar包释放源代码
cd nginx-1.17.6     //切换到解压后的目录
./configure     //配置,不指定安装目录则当前解压后目录配置
make    //编译
make install    //安装
[root@svr7 opt]# bash test05.sh    //执行源码安装编译脚本

Nginx默认安装路径为/usr/local/nginx,该目录下会提供4个子目录,分别如下:

  • /usr/local/nginx/conf   //配置文件目录
  • /usr/local/nginx/html   //网站页面目录
  • /usr/local/nginx/logs   //Nginx日志目录(Nginx程序运行时会开启)
  • /usr/local/nginx/sbin   //主程序目录

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安运维日记

Hey~ 感谢您的充电支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值