if条件判断
如何写一个高可用性的脚本,赋予脚本智能化,赋予脚本执行逻辑。
比如nginx安装脚本中
- configure执行成功在执行make,
- make执行成功在执行make install
- 上一步错误就不需要执行后面的代码了。
answer: 加入判断
只要你想在代码中判断一下的时候就第一时间想到if就行了,适用于99%的语言。
一、if语法
1,语法一:单if语句
适用范围:只需要一步判断,条件返回真干什么。
语句格式
if [ condition ] #condition 值为true or false(if和[]之间必须有空格!!!)
then #条件为真的时候执行
commands #代码块 一行或者多行代码
fi #语句的结束
该语句翻译成汉语大意如下:
假如 条件为真
那么
执行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 #语句的结束
该语句翻译成汉语大意如下:
假如 条件为真
那么
执行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 结束判断
该语句翻译成汉语大意如下:
假如 条件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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律