Shell脚本的概念
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各种Shell控制语句以完成更复杂的操作
Shell脚本应用场景
重复性操作
交互性任务
批量事务处理
服务运行状态监控
定时任务执行
Shell的作用— 命令解释器,“翻译官” 介于系统内核与用户之间,负责解释命令行
注: bash ( /bin/bash)是目前大多数Linux版本采用的默认 shell
shell脚本的作用
自动化运维
批量化重复操作可以编写脚本结合计划任务自动周期运行
减轻管理员工作量
提高处理文本文件的速度
避免配置出错
shell 可针对linux系统做自动化运维和状态监控
python 可针对通过API接口对应用程序做数据的统计和分析
强类型 int string C c++ java GO
弱类型 shell python 解释性语言
shell 脚本代码申明解释器 #!/bin/bash 或省略
python代码 必须申明解释器 #!/usr/bin/python 或 #! + python执行文件的其他路径
创建shell脚本格式
#!/bin/bash 申明解释器
#xxxxxxxx 做脚本的注释信息
……………….. 代码块
执行脚本
1.会在脚本的子shell环境中执行脚本中的代码 使用绝对路径或者相对路径指定脚本的路径运行,要求脚本文件必须要有执行权限 x
指定shell程序来直接解释运行脚本 Bash 脚本文件 Sh
2.会在当前的shell环境中执行脚本里的代码操作,也就是脚本文件中的代码或者命令会影响当前shell环境 Source 脚本文件
执行添加权限
执行脚本文件
脚本文件路径(绝对路径与相对路径) ===>需要可执行权限
[root@localhost ~]# ./first.sh
sh(或bash) 脚本文件路径 ===>可以不需要执行权限
[root@localhost ~]# sh first.sh
source 脚本文件路径 ===>本身的路径会变化
[root@localhost ~]# source first.sh
重定向和管道
XXX | 如果管道符号右边的命令一定需要执行对象的命令,则管道符号 后面要有 xargs 命令来传递执行参数
实验混合输出
shell脚本变量
特殊变量:环境变量,只读变量,位置变量,预定义变量。
shell脚本给变量赋值的方式
自定义变量
变量名=变量值
read 获取标准输入的内容给 变量
双引号:允许通过视为普通字符
read命令获取输入内容
方法一: read -p "提示信息"变量名 echo $变量名
方法二: echo -n"提示信息" read 变量名 echo $变量名
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。
可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
实例:测试局部变量和全局变量
整数变量的运算
格式:expr 变量1 运算符 变量2 [运算符 变量3]
运算符:+ 加法、-减法、*乘法、/除法、%取余
常见的运算表达式:(result代表自定义变量,可用任意代替)
result=$(expr 变量1 运算符 变量2)
result=$((变量1 运算符 变量2))
result=$[变量1 运算符 变量2]
let result=变量1 运算符 变量2
i++相当于i=i + 1]
i--相当于i=i - 1]
i+=1相当于i=i + 1]
环境变量
1.环境变量由系统提前创建,用来设置用户的工作环境,使用env命令可以查看到当前工作环境下的环境变量:
变量USER表示用户名称
HOME表示用户的宿主目录
LANG表示语言和字符集
PWD表示当前所在的工作目录
变量PATH表示可执行程序的默认搜索路径
echo $PATH #查看当前搜索路径
PATH="$PATH:/root" #将/root目录添加到搜索路径
export PATH="$PATH:/root" #输出为全局环境变量
设置永久有效:
echo 'export PATH=$PATH:/root' >> /etc/profile #将全局环境变量追加到/etc/profile中