shell脚本基础
目录
一.什么是shell?
Shell 是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把 用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出 屏幕返回给用户。
二.什么是shell脚本
2.1概念
- 将要执行的命令按顺序保存到一个文本文件
- 给该文件可执行权限,便可运行 (绝对路径可以执行)
- 可结合各种shell控制语句以完成更复杂的操作
2.2shell脚本应用场景
- 重复性操作
- 批量事务处理
- 自动化运维
- 服务运行状态监控
- 定时任务执行
2.3shell脚本的构成
- 脚本声明
- 注释信息
- 可执行语句
- 第一句#!/bin/bash
2.4执行shell执行
- 绝对路径
- 相对路径
- sh脚本路径
- source脚本路径 与.脚本路径相同
注:其中绝对路径与相对路径执行shell脚本时,该文件必须 具备可执行权限(x)
2.5shell脚本开头第一行
规范的 Shell 脚本第一行会指出由哪个程序(解释器)来执行脚本中的内容。在 linuxbash 编程中一般为:
- #!/bin/bash
- 或
- #!/bin/sh
2.5.1不同语言脚本的开头写法
- #!/bin/sh
- #!/bin/bash
- #!/usr/bin/awk
- #!/bin/sed
- #!/usr/bin/tcl
- #!/usr/bin/expect
- #!/usr/bin/perl
- #!/usr/bin/env python
2.6shell脚本注释
在 Shell 脚本中,跟在#后面的内容表示注释。注释部分不会被执行,仅给人看。 注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯, 方便自己与他人。
最好不用中文注释,因为在不同字符集的系统会出现乱码。
三.shell脚本编程条件语句
3.1条件测试
方法①test 条件表达式
方法②格式:[空格 操作符 空格 文件或目录 空格 ]
常用的测试操作符:
- -d:测试是否为目录
- -e:测试目录或文件是否存在
- -f:测试是否为文件
- -r:测试前用户是否可读
- -w:测试当前用户是否可写
- -x:测试当前用户是否可执行
- -s:测试文件大小非0时为真(若为非空文件,则为真)
- -u:测试是否具有SUID属性
- -g:测试是否具有SGID属性
- -k:测试是否具有sticky bit 粘滞位属性
- -nt:测试第一个文件是否比第二个文件新
- -ot:测试第一个文件是否比第二个文件旧
- -ef:测试第一个文件是否与第二个文件同一个文件
整数测试
[空格 整数1 操作符 整数2 空格]
常用测试操作符:
- -eq:等于
- -ne:不等于
- -gt:大于
- -lt:小于
- -ge:大于或等于
- -le:小于或等于
逻辑测试
[空格 表达式1 空格] 操作符 [ 空格 表达式2 空格]
常用的测试操作符
-a或&& :逻辑或,“而且”的意思
-o 或||: 逻辑或,“或则”的意思
!:逻辑否
四.shell脚本语句
4.1if语句
格式:
- if [条件](条件测试操作)
- then (命令序列)
- if
elif(条件测试操作2)
else(命令序列2,否则)
4.2case语句
多用于启动脚本,功能菜单
格式:
case 变量值 in
模式1)
命令序列
;;
模式2)
命令序列
;;
*)
默认命令序列
esac
4.3shell函数
作用:将命令序列按格式写在一起,方便重复使用命令序列
格式:
[function] 函数名 (){
命令序列
return(跳出当前函数循环)
}
调出方式:
函数名 [参数1] [参数2]
4.4for循环语句
作用:读取不同的变量值,以逐个执行同一组命令
格式:
for 变量名 in 取值列表
do
命令序列
done
取值列表的设置
直接输入,以空格分割
4.5while循环语句
作用:重复测试某个条件,只要条件成立则反复执行
格式:
while 条件测试操作
do
命令序列
done
注:while : 或者 while(ture) 无限循环