shell3

本文详细介绍了七个使用Shell脚本解决实际问题的案例,包括基于case分支的参数处理、一键部署Nginx、启动脚本、使用函数、中断退出、字符串处理以及初始化值的设定。每个案例都提供了详细的步骤和脚本示例,帮助读者掌握Shell脚本的实用技巧。
摘要由CSDN通过智能技术生成

案例1:基于case分支编写脚本
案例2:编写一键部署软件脚本
案例3:启动脚本
案例4:使用Shell函数
案例5:中断及退出
案例6:字符串截取及切割
案例7:字符串初值的处理
1 案例1:基于case分支编写脚本
1.1 问题
本案例要求编写test.sh脚本,相关要求如下:

能使用redhat、fedora控制参数
控制参数通过位置变量$1传入
当用户输入redhat参数,脚本返回fedora
当用户输入fedora参数,脚本返回redhat
当用户输入其他参数,则提示错误信息
1.2 方案
case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认操作。

case分支的语法结构如下所示:

case 变量 in
模式1)
命令序列1 ;;
模式2)
命令序列2 ;;
… …
*)
默认命令序列
esac
1.3 步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本文件

脚本编写参考如下:

[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}
确认脚本可以响应redhat控制参数:

[root@svr5 ~]# ./test.sh redhat
fedora
确认脚本可以响应fedora控制参数:

[root@svr5 ~]# ./test.sh fedora
redhat
2 案例2:编写一键部署软件脚本
2.1 问题
本案例要求编写脚本实现一键部署Nginx软件(Web服务器):

一键源码安装Nginx软件
脚本自动安装相关软件的依赖包
2.2 步骤
实现此案例需要按照如下步骤进行。

1)依赖包

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

步骤一:编写脚本

1)参考脚本内容如下:

[root@svr5 ~]# vim test.sh
#!/bin/bash
yum -y install gcc openssl-devel pcre-devel
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure
make
make install
2)确认安装效果

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

/usr/local/nginx/conf 配置文件目录

/usr/local/nginx/html 网站页面目录

/usr/local/nginx/logs Nginx日志目录

/usr/local/nginx/sbin 主程序目录

主程序命令参数:

[root@svr5 ~]# /usr/local/nginx/sbin/nginx //启动服务
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -s stop //关闭服务
[root@svr5 ~]# /usr/local/nginx/sbin/nginx -V //查看软件信息
3 案例3:启动脚本
3.1 问题
本案例要求编写Ngin启动脚本,要求如下:

脚本支持start、stop、restart、status
脚本支持报错提示
脚本具有判断是否已经开启或关闭的功能
3.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本

脚本通过位置变量$1读取用户的操作指令,判断是start、stop、restart还是status。

netstat命令可以查看系统中启动的端口信息,该命令常用选项如下:

-n以数字格式显示端口号

-t显示TCP连接的端口

-u显示UDP连接的端口

-l显示服务正在监听的端口信息,如httpd启动后,会一直监听80端口

-p显示监听端口的服务名称是什么(也就是程序名称)

1)参考脚本内容如下:

[root@svr5 ~]# vim test.sh
#!/bin/bash
case $1 in
start)
/usr/local/nginx/sbin/nginx;;
stop)
/usr/local/nginx/sbin/nginx -s stop;;
restart)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nignx/sbin/nginx;;
status)
netstat -ntulp |grep -q nginx
if [ $? -eq 0 ];then
echo 服务已启动
else
echo 服务未启动
fi;;
*)
echo Error;;
esac
2)执行测试脚本:

[root@svr5 ~]# ./test.sh start
[root@svr5 ~]# ./test.sh stop
[root@svr5 ~]# ./test.sh status
[root@svr5 ~]# ./test.sh xyz
4 案例4:使用Shell函数
4.1 问题
本案例要求编写脚本mycolor.sh,相关要求如下:

将颜色输出的功能定义为函数
调用函数,可以自定义输出内容和颜色
4.2 方案
在Shell脚本中,将一些需重复使用的操作,定义为公共的语句块,即可称为函数。通过使用函数,可以使脚本代码更加简洁,增强易读性,提高Shell脚本的执行效率

1)函数的定义方法

格式1:

function 函数名 {
命令序列
… …
}
格式2:

函数名() {
命令序列
… …
}
2)函数的调用

直接使用“函数名”的形式调用,如果该函数能够处理位置参数,则可以使用“函数名 参数1 参数2 … …”的形式调用。

注意:函数的定义语句必须出现在调用之前,否则无法执行。

  1. 测试语法格式

[root@svr5 ~]# mycd(){ //定义函数

mkdir /test
cd /test
}
[root@svr5 ~]# mycd //调用函数
[root@svr5 ~]# mycd(){ //定义函数
mkdir $1
cd $1
}
[root@svr5 ~]# mycd /abc //调用函数
[root@svr5 ~]# mycd /360 //调用函数
4.3 步骤
实现此案例需要按照如下步骤进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值