if else

浏览:15
jackios 2020-07-18 09:23

判断文件,目录是否存在

-d filename 如果 filename为目录,则为真 

-f filename 如果 filename为常规文件,则为真 

目录:


path="/home"
#if [ ! -d ${path} ];then
if [ -d ${path} ];then
    echo dir ${path} exist!
else
    echo dir ${path} not exist!
fi

文件:


file="/home/log.txt"
if [ -f ${file} ];then
    echo file ${file} exist!
else
    echo file ${file} not exist!
fi


Nginx日志切割

#!/bin/bash
#auto mv nginx log shell
#by author test
S_LOG=/usr/local/nginx/logs/access.log
D_LOG=/data/backup/`date +%Y%m%d`
echo -e "\033[32mPlease wait start cut shell scripts...\033[1m"
sleep 2
if [ ! -d $D_LOG ];then
        mkdir -p  $D_LOG
fi
mv $S_LOG  $D_LOG
kill  -USR1  `cat /usr/local/nginx/logs/nginx.pid`
echo "-------------------------------------------"
echo "The Nginx log Cutting Successfully!"
echo "You can access backup nginx log $D_LOG/access.log files."

 


shell脚本检测Nginx服务是否正常启动,如果宕机,那么就设置邮箱报警 

#!/bin/bash

nx=`netstat -tpln | grep nginx | wc -l` #用这条命令也可以ps -ef | grep nginx | grep -v grep | grep master | wc -l

 

if [ $nx -eq 0 ];then
        /usr/local/nginx/sbin/nginx
fi
 
if [ $? -ne 0 ];then
echo "nginx is down send mail"  #如果nginx启动失败发送邮件,这里邮件可以自己配置
fi

 

if 语句

最简单的用法就是只使用 if 语句,它的语法格式为:


if  condition
then
    statement(s)
fi

condition是判断条件,如果 condition 成立(返回“真”),那么 then 后边的语句将会被执行;如果 condition 不成立(返回“假”),那么不会执行任何语句。从本质上讲if是检测命令退出状态。


如果你喜欢,也可以将 then 和 if 写在一行:


if  condition;then
    statement(s)
fi

 


实例1


下面的例子使用 if 语句来比较两个数字的大小:


#!/bin/bash
read a
read b
if (( $a == $b ))
then
    echo "a和b相等"
fi

 


实例2


在判断条件中也可以使用逻辑运算符,例如:


[root@localhost ~]# vim test.sh 
#!/bin/bash
read a
read b
 
if (($a>10 && $b<15))
then
 echo "a>10 b<15"
 echo "ha ha"
fi
[root@localhost ~]# ./test.sh 
11
12
a>10 b<15
ha ha

&&就是逻辑“与”运算符,只有当&&两侧的判断条件都为“真”时,整个判断条件才为“真”。


请注意,即使 then 后边有多条语句,也不需要用{ }包围起来,因为有 fi 收尾呢 


 

if else 语句

如果有两个分支,就可以使用 if else 语句,它的格式为:


if  condition
then
   statement1
else
   statement2
fi

如果 condition 成立,那么 then 后边的 statement1 语句将会被执行;否则,执行 else 后边的 statement2 语句。


举个例子:

[root@localhost ~]# vim test.sh 
#!/bin/bash
read a
read b
 
if(($a==$b))
then
   echo "a=b"
else
   echo "a!= b"
fi
  
[root@localhost ~]# ./test.sh 
10
10
a=b
[root@localhost ~]# ./test.sh 
12
10
a!= b

 

if elif else 语句

Shell 支持任意数目的分支,当分支比较多时,可以使用 if elif else 结构,它的格式为:


if  condition1

then

   statement1

elif condition2

then

    statement2

elif condition3

then

    statement3

……

else

   statementn

fi

注意,if 和 elif 后边都得跟着 then。


整条语句的执行逻辑为:


如果 condition1 成立,那么就执行 if 后边的 statement1;如果 condition1 不成立,那么继续执行 elif,判断 condition2。

如果 condition2 成立,那么就执行 statement2;如果 condition2 不成立,那么继续执行后边的 elif,判断 condition3。

如果 condition3 成立,那么就执行 statement3;如果 condition3 不成立,那么继续执行后边的 elif。

如果所有的 if 和 elif 判断都不成立,就进入最后的 else,执行 statementn。

举个例子,输入年龄,输出对应的人生阶段:


#!/bin/bash
read age
 
if (( $age <= 2 )); then
    echo "婴儿"
elif (( $age >= 3 && $age <= 8 )); then
    echo "幼儿"
elif (( $age >= 9 && $age <= 17 )); then
    echo "少年"
elif (( $age >= 18 && $age <=25 )); then
    echo "成年"
elif (( $age >= 26 && $age <= 40 )); then
    echo "青年"
elif (( $age >= 41 && $age <= 60 )); then
    echo "中年"
else
    echo "老年"
fi

 

 

运行结果1:

19

成年

 

运行结果2:

100

老年

 

if判断文件,目录是否存在

-d filename 如果 filename为目录,则为真 

-f filename 如果 filename为常规文件,则为真 

目录:


path="/home"
#if [ ! -d ${path} ];then
if [ -d ${path} ];then
    echo dir ${path} exist!
else
    echo dir ${path} not exist!
fi

文件:


file="/home/log.txt"
if [ -f ${file} ];then
    echo file ${file} exist!
else
    echo file ${file} not exist!
fi




如果觉得我的文章对你有用,请随意赞赏

待完善
不要去追一匹马,用追马的时间种草,待到春暖花开时,就会有一批骏马任你挑选;不要去刻意巴结一个人,用暂时没有朋友的时间,去提升自己的能力,待到时机成熟时,就会有一批的朋友与你行。用人情做出来的朋友只是暂时的,用人格吸引来的朋友才是长久的。所以种下梧桐树,引得凤凰来。你若盛开,蝴蝶自来,你若精彩,天自安排
微信扫码登录测试

Powered by Jackios V1.0 Copyright © 2019-2020 liuql 版权所有 备案号: 鲁ICP19026293号