简单Shell脚本的设计
问题
本案例要求编写三个脚本程序,分别实现以下目标:
1)在屏幕上输出一段文字“Hello World”
2)能够为本机快速配好Yum仓库
3)能够为本机快速装配好vsftpd服务
方案
当脚本的代码量较大,或者脚本需要传递给其他合作者使用时,规范的脚本可以显著降低代码维护的难度(可能几个月以后需要更改功能)、提高代码的易读性(小伙伴不会频繁的来问你“这个变量用来干吗的”之类的问题)。
注意:在学习Shell脚本的过程中,如果代码量比较少,通常就省略注释了。
一个规范的Shell脚本构成包括:
脚本声明(需要的解释器、作者信息等)
注释信息(步骤、思路、用途、变量含义等)
可执行语句(操作代码)
Shell脚本的执行方式:
方法一,作为“命令字”:指定脚本文件的路径,前提是有 x 权限
方法二,作为“参数”:使用sh、source或者点号 . 来加载脚本文件
步骤
实现此案例需要按照如下步骤进行。
步骤一:编写第一个Shell脚本,输出“Hello World”
1)手动测试脚本功能的实现
要输出一段话,可以使用echo命令,将指定的字符串放在单引号内即可:
[root@svr5 ~]# echo 'Hello World' Hello World
2)根据手动任务操作编写脚本文件
[root@svr5 ~]# vim /root/first.sh #!/bin/bash echo 'Hello World' [root@svr5 ~]# chmod +x /root/first.sh //添加可执行权限
3)执行脚本,测试效果
[root@svr5 ~]# /root/first.sh Hello World
步骤二:编写为本机快速配Yum仓库的Shell脚本
1)手动测试脚本功能的实现
为RHEL客户机配置Yum时,需要进入/etc/yum.repos.d/目录下建立指定的仓库配置文件;另外,还要注意排除其他仓库配置的干扰。从无到有的任务实现过程,整理后的操作大致如下(以光盘触发挂载点/misc/cd作Yum库为例)。
首先,清理现有的Yum仓库配置文件:
[root@svr5 ~]# rm -rf /etc/yum.repos.d/*.repo [root@svr5 ~]# ls /etc/yum.repos.d/* //确认清理结果
ls: 无法访问/etc/yum.repos.d/*: 没有那个文件或目录
然后,建立新的Yum仓库配置文件:
[root@svr5 ~]# vim /etc/yum.repos.d/rhel6.repo [rhel6] name=Red Hat Enterprise Linux 6 baseurl=file:///misc/cd enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2)根据手动任务操作编写脚本文件
通过vim编辑器建立rhel6.repo的操作需要用户交互键入内容,不方便在Shell脚本中使用。但是因为Yum配置内容是固定的,因此可以采用echo显示配置再重定向到仓库文件的方式,配置内容放在单引号内、正常换行即可。
编写的脚本内容参考如下:
[root@svr5 ~]# vim /root/el6repo.sh #!/bin/bash rm -rf /etc/yum.repos.d/*.repo echo '[rhel-packages] name=Red Hat Enterprise Linux 6 baseurl=file:///misc/cd gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release ' > /etc/yum.repos.d/rhel6.repo [root@svr5 ~]# chmod +x /root/el6repo.sh //添加可执行权限
3)执行脚本,测试效果
为了方便检查效果,先清理/etc/yum.repos.d/目录:
[root@svr5 ~]# rm -rf /etc/yum.repos.d/* [root@svr5 ~]# ls /etc/yum.repos.d/* //确认清理结果
ls: 无法访问/etc/yum.repos.d/*: 没有那个文件或目录
执行配置Yum仓库的脚本:
[root@svr5 ~]# /root/el6repo.sh [root@svr5 ~]#
检查配置结果:
[root@svr5 ~]# ls /etc/yum.repos.d/* //仓库配置已建立 /etc/yum.repos.d/rhel6.repo [root@svr5 ~]# yum repolist //Yum仓库已可用 rhel-packages | 3.9 kB 00:00 ... rhel-packages/primary_db | 3.1 MB 00:00 ... repo id repo name status rhel-packages Red Hat Enterprise Linux 6 3,690 repolist: 3,690
步骤三:编写快速装配vsftpd服务的Shell脚本
1)手动测试脚本功能的实现
根据在Linux网络服务部分学过的知识,装配vsftpd服务包括以下过程。
首先,确保安装vsftpd软件包(执行yum安装即可):
root@svr5 ~]# yum -y install vsftpd //不管是否已安装 .. .. 然后,确保启动vsftpd服务: [root@svr5 ~]# service vsftpd restart //不管是否已启动 .. .. 最后,可设置vsftpd开机后能够自动运行: [root@svr5 ~]# chkconfig vsftpd on //不管是否已设置
2)根据手动任务操作编写脚本文件
按照手动任务的顺序编排脚本内容,参考如下:
[root@svr5 ~]# vim /root/ftpon.sh #!/bin/bash yum -y install vsftpd &> /dev/null service vsftpd restart chkconfig vsftpd on [root@svr5 ~]# chmod +x /root/ftpon.sh //添加可执行权限
3)执行脚本,测试效果
为了方便检查效果,先移除vsftpd软件包:
[root@svr5 ~]# yum -y remove vsftpd .. .. [root@svr5 ~]# rpm -q vsftpd //确认已卸载 package vsftpd is not installed 执行快速装配vsftpd服务的脚本: [root@svr5 ~]# /root/ftpon.sh 关闭 vsftpd: [失败] 为 vsftpd 启动 vsftpd: [确定] 确认脚本执行结果: [root@svr5 ~]# rpm -q vsftpd vsftpd-2.2.2-11.el6_4.1.x86_64 [root@svr5 ~]# service vsftpd status vsftpd (pid 45694) 正在运行... [root@svr5 ~]# chkconfig --list vsftpd vsftpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
- shell脚本:查找文本 与 简单的grep
- 简单的SHELL多线程脚本!!
- 简单的shell脚本学习
- shell脚本的简单的一些变量
- linux下设计一个Shell脚本:判断当前工作目录下所有的文件类型。
- 关于一个简单的python上传到linux服务器再经过shell脚本ftp传输的问题
- shell脚本程序的简单介绍及应用
- linux 几个简单shell脚本demo
- 简单shell脚本
- 在shell脚本里使用Abstract Factory的设计模式
- 一些简单的shell脚本实例
- 一些简单的shell脚本实例
- shell script自动搭建简单的linux系统初始化脚本
- 【转载】我的一些简单的shell脚本实例
- [SHELL] LNMP一键安装脚本设计(v1.0)
- shell脚本中简单的函数示例
- 我的一些简单的shell脚本实例
- Shell 脚本学习 — 简单的执行跟踪
- shell脚本-简单的计算器功能、ksh脚本-99乘法口诀表
- Linux脚本设计练习2——一个游戏菜单的简单实现