if
if多分支执行流程:首先对if后面的条件进行判断,若成立则执行then后面的命令序列,然后转到fi结束。若if条件不成立,则跳过,对elif后面的条件进行判断,若成立,则执行then后面的命令序列,然后转到fi结束,以此类推…若所有条件都不成立,则执行else后面的命令序列,然后转到fi结束,执行后续命令。
语法
if [ 条件判断1 ] ; then
commands
elif [ 条件判断2 ] ; then
commands
elif [ 条件判断3 ] ; then
commands
…
else
commands
fi
简单案例
例1:用多分支 if 条件语句来判断用户输入的是一个文件还是一个目录。
脚本内容:
#!/bin/bash
#date:2020-2-26
#描述:判断文件类型
read -p "请输入一个文件:" file
if [ -z $file ]
then
echo "错误!输入的文件为空."
elif [ ! -e $file ]
then
echo "错误!输入的文件不存在."
elif [ -f $file ]
then
echo "$file是一个普通文件"
elif [ -d $file ]
then
echo "$file是一个目录"
else
echo "$file是其他类型文件"
fi
执行结果:
[root@linus ~]# sh if_test1.sh
请输入一个文件:1.sh
1.sh是一个普通文件
[root@linus ~]# sh if_test1.sh
请输入一个文件:/var
/var是一个目录
[root@linus ~]# sh if_test1.sh
请输入一个文件:/backup
错误!输入的文件不存在.
[root@linus ~]# sh if_test1.sh
请输入一个文件:
错误!输入的文件为空.
您在 /var/spool/mail/root 中有新邮件
例2:根据输入的考试分数的不同来区分优秀,合格,不合格。
脚本内容:
#!/bin/bash
#date:2020-2-26
#描述:考试分数判断
read -p "请输入一个您的成绩(0-100):" num
if [ $num -gt 100 ]
then
echo "您输入的数字超过范围,请重新输入"
elif [ $num -ge 80 ]
then
echo "您的分数为$num,优秀"
elif [ $num -ge 60 ]
then
echo "您的分数为$num,及格"
else
echo "您的分数为$num,不及格"
fi
执行结果:
[root@linus ~]# sh if_test2.sh
请输入一个您的成绩(0-100):10
您的分数为10,不及格
[root@linus ~]# sh if_test2.sh
请输入一个您的成绩(0-100):60
您的分数为60,及格
[root@linus ~]# sh if_test2.sh
请输入一个您的成绩(0-100):100
您的分数为100,优秀
[root@linus ~]# sh if_test2.sh
请输入一个您的成绩(0-100):1000
您输入的数字超过范围,请重新输入