单分支结构

语法:

if [条件]

then

指令

fi

if [条件]:then

指令

fi


if单分支条件中文编程语法:

如果 [你有房]

那么

我就嫁给你

果如


提示:分号相当于命令换行,上面两种语法等用。

特殊写法:if [-f "$file1"];then echo 1;if 相当于:[if "$file1"]&& echo 1

if [ -f "$file1" ] :then

echo 1

fi


范例1:

#!/bin/bash#功能:单分支if结构整数比较,用-lt格式例子if[10-lt12]thenecho"yes"fi执行结果:[root@XCNif]#shtest1.shyes#提示:当比较条件为整数数字时


范例2:使用read及脚本传参方式如果实现上述整数的比较?

解答:

特别强调:read读入和命令行传参是两种输入内容的方法。

1)脚本传参的方式脚本例子

#!/bin/bashif[$1-lt$2]:thenecho"yes,$1lessthen$2"fi输入结果[root@XCNif]#shif2.sh12yes,1lessthen2

2)单分支if判断两整数大小三种情况的脚本例子(以read读入为例)

#!/bin/bashread-p"plsinputtwonum:"abif[$a-lt$b];thenecho"yes,$alessthan$b"exitfiif[$a-eq$b];thenecho"yes,$aeaual$b"exitfiif[$a-gt$b];thenecho"yes,$agreaterthan$b"exitfi见证奇迹的时刻:[root@localhostshell]#shif1.shplsinputtwonum:12yes,1lessthan2


范例3:开发shell脚本实现如果/server/scipts下面存在if3.sh的内容就输出到屏幕

注意:如果执行脚本后发现该if3.sh不存在,就自动创建这个if3.sh脚本

#!/bin/bashpath=/server/scriptsfile=if3.sh#no1if[!-d$path]thenmkdir-p$pathecho"$pathisnotexist,alreadycreatedit."fi#no2if[!-f$path/$file]thentouch$path/$fileecho"$fileisnotexist,alreadtcreatedit."exitfi#no3echo"ls-l$path/$file"ls-l$path/$file~执行输出:[root@localhost~]#shif.sh/server/scriptsisnotexist,alreadycreatedit.if3.shisnotexist,alreadtcreatedit.


范例4:开发脚本判断系统剩余内存大小,如果低于100M就邮件报警。

测试报警成功后加入系统定时任务每3分钟执行一次检查。


思路:

如果去内容,去内存那个选项。

[root@ailuoli~]#free-m|grepbuffers/|awk'{print$NF}'1781

2.发邮件mail,mutt。sendmail服务器要开启

[root@ailuoli~]#yuminstallsendmail[root@ailuoli~]#/etc/init.d/sendmailstartStartingsendmail:[OK]Startingsm-client:[OK][root@ailuoli~]#echo"xcn"|mail-s"title"995345781@qq.com

3.编写脚本

#!/bin/bashuserd_mem=`free-m|grepbuffers/|awk'{print$NF}'`if[$userd_mem-lt100]thenecho"menmisnotenough,$userd_men."|mail-s"memwarning$(date+%F)"995345781@qq.comfi

三分钟监测一次:

*/3 * * * * /bin/bash /mem.sh