目录
前言
随着Linux服务器在企业中应用越来越多,服务器自动化管理也越来越重要。在Linux服务器自动化维护工作中,除计划任务设置外,Shell脚本应用也是非常重要一部分
一、Shell脚本概述
什么是Shell
是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句已完成更复杂的操作
Shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行。。。等等
二、规范编写脚本
执行脚本文件
方法一:脚本文件路径绝(绝对路径与相对路径)
[root@192 ~]# ./fisn.sh (必须有者执行权限)
方法二:sh脚本文件路径
[root@192 ~]# sh./fisn.sh
方法三:source脚本文件路径
[root@192 ~]# source.fisn.sh
编写脚本构成
vim 1.sh #使用vim编辑器编写,所有脚本格式为sh
#!/bin/bash #脚本解释器写脚本必须加
cd /boot/
echo "当前目录位于"
pwd
echo "其中以vml开头的文件包括"
ls -lh vml*
执行脚本
上面脚本文件中,包括三条命令,cd/boot/、pwd、ls -lh vml*。执行脚本文件后输出结果与单独执行这个三条命令是相同的,实现了自动化过程。
三、重定向与管道操作
管道操作
将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入
例:[root@192 ~]# ps -aux | wc -l
203
交互式硬件设备
标准输入:从该设备接受用户输入数据
标准输入:从该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
类型 | 设备文件 | 文件描述编号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/dtderr | 2 | 显示器 |
重定向操作
类型 | 操作符 | 用途 |
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | > | 将输出结果保存到指定的文件(覆盖原有的内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有的内容) |
2>> | 将错误信息追加到指定的文件中 | |
混合输出 | &> | 将标准输出、标准错误的内容保存到同一个文件中 |
2>&1 | 将标准错误输出重定向到标准输出 |
例:[root@192 ~]# echo 123456 > 1.txt 将123456输入到1.txt文件中
[root@192 ~]# cat 1.txt
123456
四、脚本变量
变量作用
用来存放系统和用户需要使用的特定参数
变量名:使用固定名称,有系统预设或用户定义
变量值:能够根据用户设置、系统环境变化二变化
变量的类型
自定义变量:由用户自己定义、修改和使用
特殊变量:环境变量,只读变量,位置变量,预定义变量
例:[root@192 ~]# A=123 #定义变量
[root@192 ~]# echo $A #查看变量
123
自定义变量
赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果
read命令 交互式定义变量
-p | 提示用户信息 |
-n | 定义字符数 |
-s | 不显示用户输入内容,产用于输入密码 |
-t | 定义超时间,超过多长时间输入退出 |
例:[root@192 ~]# read -p "请输入你的姓名 :" name
请输入你的姓名 :zhang
[root@192 ~]# echo $name
zhang
整数的变量运算
expr 变量1 运算符 变量2 [运算符 变量3]
常用运算符
加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
求模(取余)运算:%
例:[root@192 ~]# x=12
[root@192 ~]# y=13
[root@192 ~]# expr $x + $y
25
总结
Shell脚本千变万化的上面只是基础,同样的命令表达有各种写法,想要Shell脚本写的熟练还需继续学习多写脚本灵活运用。