Shell脚本
概念
- 将要执行的命令按顺序保存到一个文本文件
- 给该脚本文件可执行权限
- 可结合各种Shell控制语句以完成更复杂的操作
执行命令流程的交互区别
- 交互式
- 用户直接与命令行交互,实时输入和接收命令行程序的输出
- 非交互式
- 命令在执行时按照脚本文件中预先定义好的指令顺序执行,并且通常不会从用户终端获取输入
- Shell脚本执行的流程就是非交互式
Shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
- 巡检
Shell的作用
- Shell的作用 —— 命令解释器,“翻译官”
- 介于系统内核与用户之间,负责解释命令行,解释的结果发送给内核,内核再向硬件发送指令
- 每个操作系统都可以支持多个不同的解释器
- 每个系统的解释器不一定支持相同的脚本
列出系统中全部解释器
CentOS系统默认的解释器就是bash
实验
脚本的基本书写格式和执行命令
指定解释器的方式执行脚本
指定路径方式执行脚本
需要拥有被执行脚本的执行权限
相对路径
直接加载脚本
重定向
重新定义输出的方向
- 尖括号往右指是重定向标准输出>, >>
- 尖括号往左指是重定向输入<, <<
覆盖输出
追加输出
重定向输入
输出新建一个存放密码的文件
新建一个用户
比如修改一个用户的密码,通过passwd的--stdin选项,指走标准输入的设备,默认设备是键盘,
这里指定为文件,就将密码设为文件中的字符串了
前提是关闭内核安全机制
通过脚本实现
错误重定向
把提示的错误信息单独提取出来放入文本中
- 标准输出 :1>
- 正常信息输出到指定文件,错误信息在终端显示
- 错误输出:2>
- 正常信息在终端显示,错误信息输出到指定文件中
- 标准输出和错误输出同时重定向:&>
- 正常信息和错误信息都输出到指定文件中
比如在检测一个源码软件包所需依赖时
使用 ./configure 2>error.log命令
管道符
作用:过滤
比如要只查看根分区的挂载信息
使用 df 命令并通过管道符过滤
相关命令
命令 | 说明 |
df -h | grep "d" | 显示df命令输出的内容中包含 " d " 的行 |
df -h | grep "/$" | 显示df命令输出的内容中以 " / " 结尾的行 |
df -h | grep "/$"| awk '{print $6} | 显示df命令输出的内容中以 " / " 结尾的行中的第6列 |
grep "root" /etc/passwd grep "bash" | 显示 /etc/passwd 文件内容以root开头bash结尾的行 |
变量
变量是用于存储数据值的名称
变量一般存放在内存中,所以当重启主机后,没有文件保存的变量会消失
取消变量
引号
- 如果声明字符串,并且字符串中带有空格的情况下,要加引号
- 如果要声明数字,就不能加引号
反撇号
如果要在变量中加入命令,要用反撇号包起来