shell脚本学习
时间 20.6.13-14
Shell 条件测试
目的;正确处理Shell程序运行过程中遇到的各种情况,熟练掌握自动化运维Shell脚本程序的编写。
1.条件测试的基本语法。
格式一:test条件表达式
格式二:[条件表达式]
格式三:[[条件表达式]]
note:[]的左右要有空格。
常用语法:
语法一:test<测试表达式>
test命令和"测试表达式"之间最少有一个空格
语法二:[<测试表达式>]
[]的边界和内容之间至少有一个空格
语法三:[[<测试表达式>]]
[[]]的边界和内容之间至少一个空格
语法四:((<测试表达式>))
(())两端不需要有空格
0为真,非0为假
案例:
2.文件测试表达式
[ 操作符 文件或目录 ]----空格
常用额文件测试操作符
-d d-directory 目录
-f f-file 普通文件
-e e-exist 存在
-r r-read 可读
-s s-size 文件存在and大小不为零
-w w-write 可写
-x x-executable 可执行
-L L-link 链接文件判断
f1 -nt f2 nt-newer than 前比后新
f1 -ot f2 ot-older than 后比前新
案例:
3.字符串测试表达式
常用字符串测试操作符
-n “字符串” 若字符串的长度不为0,则为真。 -n -no zero
-z “字符串” 若字符串的长度为0,则为真。 -z -zero
“串1”=“串2”
“串1”!=“串2”
案例:
4.整数测试表达式。
[]/test (())/[[]]
-eq ==或=
-ne !=
-gt >
-ge >=
-lt <
-le <=
e-equal
g-greater
l-less
n-not
案例:
5.逻辑操作符
[]/test [[]]/(())
-a && and
-o || or
! ! not
案例:
流程控制之条件判断
目的:使程序根据不同条件执行不同的程序分支
1.语法
单分支结构
语法一:
if <条件表达式>
then
指令
fi
语法二:
if <条件表达式>;then
指令
fi
双分支结构
if <条件表达式>
then
指令序列1
else
指令序列2
fi
多分支结构
语法:
if 条件表达式1
then
命令序列1
elif 条件表达式2
then
命令序列2
else
命令序列n
fi
案例:
1.单分支
编写脚本,判断当前系统剩余内存大小,如果低于100M,邮件报警管理员,使用计划任务,每
10分钟检查一次。
核心——判断剩余的内存大小
编写脚本,判断当前脚本执行者,如果不是root用户,提示用户脚本需要root用户来执行,并
退出。
核心–判断用户
2.双分支
判断 sshd 进程是否运行,如果服务未启动则启动相应服务。
检查主机是否存活,并输出结果
3.多分支
复合指令辨析
释义:一串命令
() {} 的比较
同:都是把一串命令放在括号里面,若命令在一行命令之间用 ; 号来分隔开
异:()重新开shell,即子shell {}当前shell执行
()最后一个命令不用分号 {}最后一个命令要用分号
()第一个命令和左边括号不必有空格 {}第一个命令和左括号必须要有一个空格
命令内外分明-即括号内部内用,外部整体用。
案例:
exit退出程序
作用:终止shell程序的执行
后可跟可选参数(参数为Z,取值范围0-255 查看状态值)
多条件判断语句CASE
语法:
case 变量名 in
值1)
指令1
;;
值2)
指令2
;;
值3)
指令3
;;
*)
默认
esac
案例: