第八章 Shell编程之条件语句
一、条件测试
1、测试命令
(1)test 条件表达式
(2)[条件表达式]
(3)$?:根据返回值判断前者是否成立
2、文件测试:根据指定路径名称,判断对应文件或目录以及读写执行状态等
(1)-d:是否为目录(Directory)
(2)-e:是否存在(exist)
(3)-f:是否为文件(file)
(4)-r:是否有读取权限(read)
(5)-w:是否有写入权限(write)
(6)-x:是否有执行权限(excute)
(7)示例:[ -d /etc ]或test -d /etc
(8)-nt:判断文件A是否比B新
(9)-ot:判断文件A是否比B旧
(10)-ef:判断两个文件是否为同一文件(是否指向同一个inode)
(11)示例:test A -nt B或[ A -nt B ]
3、整数值比较
(1)-eq:等于
(2)-ne:不等于
(3)-gt:大于
(4)-lt:小于
(5)-ge:大于等于
(6)-le:小于等于
(7)示例:[ a -eq b ]
4、字符串比较
(1)=:等于
(2)!=:不等于
(3)-z:是否为空
(4)示例:[ a = b ]、[ -z a ]
5、逻辑测试
(1)&&:逻辑与,只有当两边条件同时成立时才返回0
(2)||:逻辑或,当两边任意一边条件成立时就返回0
(3)!:逻辑否,当条件不成立时返回0
二、if语句
1、if语句的结构
(1)单分支结构
if 条件
then
具体命令
fi
①示例
(2)双分支格式
if 条件
then
具体命令
else
具体命令
fi
①示例
(3)多分支格式
if 条件
then
具体命令
elif 条件
then
具体命令
else
具体命令
fi
①示例
练习题
1、判断当前系统内核主、次版本,若大于2.4则输出相应版本号,否则提示“内核版本太低,无法继续”
2、判断系统中sysstat软件包的安装情况,如已经安装,则提示“已安装”并输出版本信息。否则提示“未安装,尝试自动安装”,并自动挂载光盘进行安装
3、根据IP地址查主机状态
4、实时监控本机内存和硬盘剩余空间,当内存剩余空间小于500M、根分区硬盘空间小于1000M时,发送报警邮件给root
5、检测本机当前用户是否是超级管理员,如果是,则使用yum安装vsftpd,不是则提示您非管理员(使用字符串比较)
6、提示用户输入3个数字,脚本根据数字大小依次排序输出
7、根据当前时间,返回问候语,可设置为开机启动,每次登陆提示如早上好!张三,现在时间为2019-7-3 09:01:01
8、判断文件或目录是否存在,如执行./filedir.sh /aaa.txt会判断aaa.txt是否为文件,是则提示是文件,否则提示没有该文件。如是目录,则显示该目录详细信息,否则提示没有该目录
9、提示用户输入年份后判断概念是否闰年(能被4整除且不能被100整除,或者能被400整除的年份)
10、从键盘读取论坛积分,判断用户等级:大于等于90是神功绝世,大于等于80小于90为登峰造极,大于等于70小于80为炉火纯青,大于等于60小于70为略有小成,小于60为初学乍练
11、判断用户输入的是Yes或NO