1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Shell】20天学会shell脚本命令(3)IF条件语句

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

时间:2019-11-05 08:45:47

相关推荐

【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执行语句1elif ((条件2));then执行语句2else不满足条件fi

1、正确实例:

#!/bin/bashNUM=$1if (($NUM >10));thenecho "this number($NUM) is bigger than 10"elseecho "this number($NUM) is not bigger than 10"fi

正确实例截图:

2、错误实例

#!/bin/bashNUM=$1if [[ $NUM > 10 ]] ; thenecho "this number($NUM) is bigger than 10!"elseecho "this number($NUM) is smaller than 10!"fi

错误实例的截图:

我们得出了完全相反的结论,然而,根据常识,我们明显知道,9不可能大于10的;那么,问题出在哪里呢?原来,双方括号【[[ 条件 ]]】如果要比较大小,必须使用转义的大鱼号,小于号,等于号;如上图中,不能直接使用大于号,而应该讲大于号换成【-gtl】;并且,双中括号内侧必须两内侧边空格,否则会报错;但是,如果使用双小括号,就可以不用空格,更简单明了;

将上面的语句改成下面的样子即可:

关于小括号和中括号的用法,可以看下面的总结;

2.2、目录是否存在

目录的判断需要使用中括号,中括号里的逻辑运算符,可以总结如下:

-f:判断文件是否存在;-d:判断目录是否存在;-eq:等于,整数比较;-ne:不等于,整数比较;-lt:小于;-gt:大于;-le:小于或等于;-ge:大于或等于;-a:and,表示并的关系;-o:or,或者,表示并的关系;-z:空字符串;!:非;

实例:

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

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

注意感叹号和-d之间有空格!!!

2.3、测试脚本是否正确

格式:

/bin/bash -n fileExist.sh

如果没有问题,则会没有任何提示:

如果有问题,则:

(我这里多打了一个中括号);但是,这个方法只能检查格式错误,不能检查其他的错误,立刻如,如果我把中括号那里换成了1,则不会报错;

2.4、分数判断实例:

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

截图:

2.5、注意

1、小括号可以使用>,<,=;并且括号内外可以没有空格;

2、中括号括号内侧必须要有空格;

3、中括号不可以使用<,>,=;而必须使用转义的逻辑判断条件;

4、赋值号前后不能有空格;

本篇说明内容完毕;

三、总结

欢迎关注我的

CSDN博客: /River_Continent

微信公众号:幕桥社区

知乎:张牧野, /people/zhang-mu-ye-37-76/activities

简书: /u/02c0096cbfd3

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。