Shell编程学习-If条件语句

示例1:使用传参的方式实现两个整数的比较:

#!/bin/bash
#
read -p "Please input second number: " num1 num2

if [ $num1 -lt $num2 ]
  then
    echo "$num1 is less than $num2."
    exit
fi

if [ $num1 -eq $num2 ]
  then
    echo "$num1 is equal to $num2."
    exit
fi

if [ $num1 -gt $num2 ]
  then
    echo "$num1 is greater than $num2."
    exit
fi

示例2:使用read输入的方式实现两个整数的比较:

[root@vm1 scripts]# cat if3.sh
#!/bin/bash
#
#read -p "Please input second number: " num1 num2
num1=$1
num2=$2

if [ $num1 -lt $num2 ]
  then
    echo "$num1 is less than $num2."
    exit
fi

if [ $num1 -eq $num2 ]
  then
    echo "$num1 is equal to $num2."
    exit
fi

if [ $num1 -gt $num2 ]
  then
    echo "$num1 is greater than $num2."
    exit
fi

说明:

1)read读入和命令行传参是两种输入内容的方法,不要混用。

2)缺点是复杂、逻辑还不够清晰,那么有没有更好的方法呢?当然有的,见后面的分支if的实现。

示例3: 开发shell脚本,实现如果/server/scripts下面存在if3.sh就输出到屏幕。注意:如果执行脚本后发现脚本if3.sh不存在,就自动创建这个if3.sh的脚本。

[root@vm1 scripts]# cat if6.sh
#!/bin/sh
#
path=/server/scripts
file=if7.sh

if [ ! -d "$path" ]
  then
    mkdir -p $path
    echo "$path dir is not exist. already create it."
fi

if [ ! -f "$path/$file" ]
  then
    touch $path/$file
    echo "$path/$file is not exist. already create it."
    exit
fi

ls -l $path/$file

运行脚本进行测试: 

[root@vm1 scripts]# sh if6.sh
/server/scripts/if7.sh is not exist. already create it.
[root@vm1 scripts]# sh if6.sh
-rw-r--r-- 1 root root 0 Jul 31 23:44 /server/scripts/if7.sh
[root@vm1 scripts]#

示例4:开发脚本判断系统剩余内存大小,如果低于100M就邮件告警。测试告警成功后系统定时任务每3分钟执行一次检查。

[root@abc ~]# cat memory_check.sh
#!/bin/bash
#
free_memory=`free -m|grep Mem|awk '{print $4}'`

CHARS="Current memory is $free_memory"

if [ $free_memory -lt 100 ]
  then
    echo $CHARS |tee /tmp/messages.txt
    mail -s "`date +%F-%T` $CHARS" [email protected] 

代码说明:

1)获取当前的剩余内存值。

2)tee:echo是屏幕输出显示,tee是并写入文件。

3)我们是获取剩余内存的值,然后跟100M进行比较。

然后再进行调试下:

[root@abc ~]# sh -x memory_check.sh
++ free -m
++ grep Mem
++ awk '{print $4}'
+ free_memory=81
+ CHARS='Current memory is 81'
+ '[' 81 -lt 100 ']'
+ echo Current memory is 81
+ tee /tmp/messages.txt
Current memory is 81
++ date +%F-%T
+ mail -s '2023-08-01-19:01:30 Current memory is 81' [email protected]

把脚本添加到crond定时任务中,每3分钟检查一次,达到阈值就发邮件告警。

*/3 * * * * /bin/sh /server/scripts/memory_check.sh &>/dev/null

另外,还有一个问题:

就是sendmail发送邮件的事情,这个之后再研究。

你可能感兴趣的:(Shell,linux)