if条件判断

 

 

如何写一个高可用性的脚本,赋予脚本智能化,赋予脚本执行逻辑。

比如nginx安装脚本中

  • configure执行成功在执行make,
  • make执行成功在执行make install
  • 上一步错误就不需要执行后面的代码了。

answer: 加入判断

只要你想在代码中判断一下的时候就第一时间想到if就行了,适用于99%的语言。

 

 

一、if语法

1,语法一:单if语句

适用范围:只需要一步判断,条件返回真干什么。

语句格式

if [ condition ]           #condition 值为true or false(if和[]之间必须有空格!!!)
   then                    #条件为真的时候执行
      commands             #代码块 一行或者多行代码
fi			   #语句的结束

流程判断11.png

该语句翻译成汉语大意如下:

假如  条件为真
 那么
    执行commands代码块
结束


例如:

[root@CentOs shell]# vim wz.sh 

 

 

#!/bin/bash

if [ ! -d /opt/shell/wz ](注意,此处[]两边必须有空格!)
    then
        mkdir -v /opt/shell/wz
        echo "wz is created!"
fi


[root@CentOs shell]# bash wz.sh 
mkdir: 已创建目录 "/opt/shell/wz"
wz is created!
[root@CentOs shell]# ls
abc  exit_code.sh  hello.sh  ShellTest.sh  wz  wz.sh
[root@CentOs shell]# 



2,语法二:if else 运算

适用范围:只需要一步判断,条件返回真干什么。

语句格式

if [ condition ]           #condition 值为true or false
   then                    #条件为真的时候执行
      commands             #代码块 一行或者多行代码
fi			   #语句的结束

流程判断11.png

该语句翻译成汉语大意如下:

假如  条件为真
 那么
    执行commands代码块
结束




例如:

如果当前登录用户是root,输出管理员你好
否则输出,guest,你好


 [root@CentOs shell]# vim ShellTest.sh



 


#!/bin/bash

if [ $USER == 'root']
   then
        echo "管理员,你好"
else
        echo "guest,你好"
fi



[root@CentOs shell]# bash ShellTest.sh 
管理员,你好
[root@CentOs shell]# su slime
[slime@CentOs shell]$ bash ShellTest.sh 
guest,你好
[root@CentOs shell]# su - slime -c "bash /opt/shell/ShellTest.sh"
guest,你好
[root@CentOs shell]# 






3、语法三:if-then-else语句

适用范围:多于两个以上的判断结果,也就是多于一个以上的判断条件。

if [ condition 1]     满足第一个条件

     then          真

            command1    执行command1代码块
else [ condition 2]   满足第二个条件
 
     then           真

             commands2    执行command2代码块

  .......
else      如果条件都不满足

            commandsX      执行commandX代码块
fi    结束判断

流程判断3.png

该语句翻译成汉语大意如下:

假如 条件1 为真

      那么

             执行代码块1
假如 条件2 为真

      那么

            执行代码块2

      以此类推的N个条件及对应的执行代码块
否则 【以上所有条件中没有一个满足的】

           执行代码块X
结束




例如:
判断两个整数的关系


[root@CentOs shell]# vim ShellTest.sh$1$2就是相当于命令行传参的意思!)

#!/bin/bash

if [ $1 -eq $2 ]
   then 
        echo "$1 == $2"
else
        if [ $1 -gt $2  ]
           then 
                echo "$1 > $2"
        else 
                echo "$1 < $2"
        fi
fi


 

 



[root@CentOs shell]# bash ShellTest.sh 1 2 
1 < 2
[root@CentOs shell]# bash ShellTest.sh 2 2
2 == 2
[root@CentOs shell]# bash ShellTest.sh 2 1
2 > 1
[root@CentOs shell]# 



或者可以这样写:


 

 

[root@CentOs shell]# bash ShellTest.sh 2 1
2 > 1
[root@CentOs shell]# bash ShellTest.sh 2 2
2 == 2
[root@CentOs shell]# bash ShellTest.sh 1 2
1 < 2
[root@CentOs shell]# 





4、if高级运算

(1)条件符号使用双小圆括号,可以在条件中植入数学表达式!

 

 

[root@CentOs shell]# cat hello.sh 
#!/bin/bash

if (( 100%4+3>8 ));then
    echo "yes"
else
    echo ""no
fi
   
[root@CentOs shell]# bash hello.sh 
no
[root@CentOs shell]# 




注意:双小圆括号中的比较运算符,使用的是我们传统的比较运算符 如:> 、>=、 ==、 <、 <= 、!=


(2)使用双方括号,可以在条件中使用通配符


for var in  ab ac rx bx rvv vt
   do
       if [[ "$var" == r* ]]
	  then
		echo "$var"
       fi
done


posted @   屯子里唯一的架构师  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示