一、if语法
1.1、if单分支结构
语法结构:
if <条件表达式>
then
指令
fi
或者
# 注意:在shell中,then和if是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。
if <条件表达式>;then
指令
fi
if单分支嵌套语句:
if <条件表达式>
then
if <条件表达式>
then
fi
fi
注意:在shell中,then和fi是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。
说明:<条件表达式> 可以是test、[]、[[]]、(())等条件表达式,每一个if条件语句都是以if开头,并带有then,最后以fi结尾
条件表达式可参考:《shell脚本中test、[]、[[]]、(())的区别》
示例
[root@shell]# cat if.sh
#!/bin/bash
if [ -f /etc/hosts ]
then
echo "[test1]"
fi
if [[ -f /etc/hosts ]];then
echo "[[test2]]"
fi
if test -f /etc/hosts
then
echo "test3"
fi
#说明:上面都是判断/etc/hosts是否是文件并是否存在,如果是文件并且存在就打印相关的命令
# -f :判断后面的是否是个文件
执行效果:
[root@shell]# sh if.sh
[test1]
[[test2]]
test3
1.2、双分支结构:加一个else否则
#if单分支结构主体是:如果…那么…。而双分支结构就是:如果…那么…否则
#语法结构
if <条件表达式>
then
命令集1
else
命令集2
fi
示例
[root@shell]# cat if1.sh
#!/bin/bash
if [ -f /etc/hosts ]
then
echo "is file"
else
echo "no file"
fi
#执行效果
[root@shell]# sh if1.sh
is file
1.3、多分支结构
语法结构:
if <条件表达式1>
then
指令集1
elif <条件表达式2>
then
指令集2
elif <条件表达式3>
then
指令集3
else
指令集4
fi
或者
#多分支结构
if <条件表达式1>;then
指令集1
elif <条件表达式2>;then
指令集2
elif <条件表达式3>;then
指令集3
else
指令集4
fi
提示:如果加elif,那么就要加then,每个elif都要带有then,最后结尾的else后面没有then
示例:
[root@shell scripts]# cat if2.sh
#!/bin/bash
if [ $1 -eq 1 ]
then
echo "input 1 success"
elif [ $1 -eq 2 ]
then
echo "input 2 success "
elif [ $1 -eq 3 ]
then
echo "input 3 success"
else
echo "input failure"
fi
说明:如果传入的第一个参数为1就输出相关命令,或者有如果传入的第一个参数为2,就输出相关命令,后面同理,最后是否则又输出什么
执行效果:
[root@shell]# sh if2.sh 1
input 1 success
[root@shell]# sh if2.sh 2
input 2 success
[root@shell]# sh if2.sh 3
input 3 success
[root@shell]# sh if2.sh 4
input failure
if使用注意项:
- [ ]表示条件测试。注意这里的空格很重要。要注意在’[‘后面和’]'前面都必须要有空格
- 在shell中,if和then是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。
- 注意if判断中对于变量的处理,需要加引号,以免一些不必要的错误。没有加双引号会在一些含空格等的字符串变量判断的时候产生错误。比如[ -n “$var” ]如果var为空会出错
- 判断是不支持浮点值的
- 如果只单独使用>或者<号,系统会认为是输出或者输入重定向,虽然结果显示正确,但是其实是错误的,因此要对这些符号进行转意
- 在默认中,运行if语句中的命令所产生的错误信息仍然出现在脚本的输出结果中
- 使用-z或者-n来检查长度的时候,没有定义的变量也为0
- 空变量和没有初始化的变量可能会对shell脚本测试产生灾难性的影响,因此在不确定变量的内容的时候,在测试号前使用-n或者-z测试一下
- ? 变量包含了之前执行命令的退出状态(最近完成的前台进程)(可以用于检测退出状态)
更多if使用案例参考:shell脚本中的if语句、shell脚本中的if条件语句介绍和使用案例