【Shell】20天学会shell脚本命令(3)IF条件语句

一、问题

1.1、环境
电脑环境:Windows 10;
JDK环境: Jdk1.8;
Docker版本:Server Version: 19.03.3
1.2、问题
在Shell脚本语句中,我们肯定会遇到条件判断,那么shell的条件判断该如何编写呢?

二、解答

2.1、数值判断;

格式:

if ((条件1));then
	执行语句1
elif ((条件2));then
	执行语句2
else
	不满足条件
fi

1、正确实例:

#!/bin/bash
NUM=$1
if (($NUM >10));then
    echo "this number($NUM) is bigger than 10"
else
    echo "this number($NUM) is not bigger than 10"
fi                                                                                                                                                                                                                                                                                                                                                                           

正确实例截图:
在这里插入图片描述

2、错误实例

#!/bin/bash
NUM=$1
if [[ $NUM > 10 ]] ; then
	echo "this number($NUM) is bigger than 10!"
else
	echo "this number($NUM) is smaller than 10!"
fi

错误实例的截图:
在这里插入图片描述
我们得出了完全相反的结论,然而,根据常识,我们明显知道,9不可能大于10的;那么,问题出在哪里呢?原来,双方括号【[[ 条件 ]]】如果要比较大小,必须使用转义的大鱼号,小于号,等于号;如上图中,不能直接使用大于号,而应该讲大于号换成【-gtl】;并且,双中括号内侧必须两内侧边空格,否则会报错;但是,如果使用双小括号,就可以不用空格,更简单明了;
将上面的语句改成下面的样子即可:
在这里插入图片描述
关于小括号和中括号的用法,可以看下面的总结;
2.2、目录是否存在
目录的判断需要使用中括号,中括号里的逻辑运算符,可以总结如下:

  1. -f:判断文件是否存在;
  2. -d:判断目录是否存在;
  3. -eq:等于,整数比较;
  4. -ne:不等于,整数比较;
  5. -lt:小于;
  6. -gt:大于;
  7. -le:小于或等于;
  8. -ge:大于或等于;
  9. -a:and,表示并的关系;
  10. -o:or,或者,表示并的关系;
  11. -z:空字符串;
  12. !:非;

实例:
如果目录不存在,则创建目录;

#!/bin/bash
#create by tzc at 2019-12-23 22:59:49
if [ ! -d /tmp ];then
	mkdir -p  /tmp
else
	echo "this director is already exit!"
fi

注意感叹号和-d之间有空格!!!
在这里插入图片描述

2.3、测试脚本是否正确
格式:

/bin/bash -n fileExist.sh

如果没有问题,则会没有任何提示:
在这里插入图片描述
如果有问题,则:
在这里插入图片描述
(我这里多打了一个中括号);但是,这个方法只能检查格式错误,不能检查其他的错误,立刻如,如果我把中括号那里换成了1,则不会报错;

2.4、分数判断实例:

#!/bin/bash
SCORES=$1
if [ -z $SCORES ];then
	echo "Usage:{please input a number betweent 0 to 100}"
	exit
fi
if [[ $SCORES -gt 90 ]];then
	echo "优秀";
elif [[ $SCORES -gt 80 ]];then
	echo "良好";
elif [[ $SCORES -gt 60 ]];then
	echo  "及格";
else
	echo "不及格!"
fi

截图:
在这里插入图片描述

2.5、注意
1、小括号可以使用>,<,=;并且括号内外可以没有空格;
2、中括号括号内侧必须要有空格;
3、中括号不可以使用<,>,=;而必须使用转义的逻辑判断条件;
4、赋值号前后不能有空格;

本篇说明内容完毕;

三、总结

欢迎关注我的
CSDN博客: https://blog.csdn.net/River_Continent
微信公众号:幕桥社区
在这里插入图片描述
知乎:张牧野, https://www.zhihu.com/people/zhang-mu-ye-37-76/activities
简书: https://www.jianshu.com/u/02c0096cbfd3

发布了348 篇原创文章 · 获赞 202 · 访问量 83万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章