说明
Shell 和 Shell 脚本的区别
Shell 指的是一种应用程序,常见的如 Windows 下的 CMD 窗口和 Linux 中的命令行窗口
Shell 脚本指的是为 Shell 编写的脚本程序
使用场景
因为在 Linux 集群下有配置与管理的需求,工作量比较大
所以使用 Shell 脚本处理同步配置文件、管理每一个节点等操作
属性
Shell 脚本编写流程
创建文件并添加执行权限
创建以
.sh
为后缀结尾的脚本文件
1 | # 通过 vi 或 vim 创建文件,只需要在创建完成并添加内容之后保存即可。 |
为脚本添加执行权限
文件权限分为三种,分别为可读、可写、可执行(r w x),分别为 4 2 1
用户权限分为三种,分别为当前用户、同组用户、其他用户(u g o)
1 | # 为当前用户赋予执行权限 |
编写脚本头,声明解释器
格式如下:
1 | # 在第一行开头编写` |
编写脚本内容
略
添加注释,以 # 作为标识符
写注释一方面规范代码,增强可阅读性
在方便自己理解的同时也有利于整理思路
强制命令解析
1 |
|
获取变量的方式
1 | # 在命令行和Shell脚本中正确获取变量的方式 |
参数的提取
1 | # 和脚本配合使用,作为传入的参数 |
方法
控制变色
1 | # 设置前景色 |
Shell 中比较运算符
1 | # 相等 equal |
if 判断语句
if 判断语句格式
1 | if [ $i -lt | -gt | -eq | -ne | -ge | -le 10 ] ; then command ; elif .... then ... ; else .... ; fi |
小例子
1 |
|
for 循环
for 循环语句格式
1 | # for 循环语句格式 |
循环打印 1-9
1 |
|
循环打印 9X9 乘法表
1 |
|
1 | for NAME [in WORDS ... ] ; do COMMANDS; done |
while 循环
while 循环语句格式
1 | # while 循环语句格式 |
while循环实现输出 1-9:
1 |
|
while循环实现99乘法表:
1 |
|
case 语句
case 语句格式
1 | # case 语句格式 |
小例子
1 |
|
Demo
自定义脚本的前提
在编写脚本完成之后先确定其权限,再将其上传到 /usr/local/bin
目录中
完成以上操作保证了在任意目录执行自定义脚本
xcall 批量操作脚本
前提是为每个节点安装和配置好ssh,使主节点能远程登陆其他节点
使用格式为: xcall.sh command
例如: xcall.sh yum install -y rsync
1 |
|
xsync 同步脚本
从主节点同步配置文件到子节点
使用格式为: xsync.sh config_filename
例如: xsync.sh /app/software/hadoop/etc
1 |
|