【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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值