Shell脚本之条件判断

导读:本篇文章讲解 Shell脚本之条件判断,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.基本语法

[ condition ]注意condition前后要有空格注意:条件非空即为true,[ 666 ]返回true,[] 返回false。

2. 常用判断条件

(1)两个整数之间比较= 字符串比较
-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)

注意:任何命令的执行状态为0则为True,否则为False

3、案例

a、判断当前目录下某个文件是否存在
[ -e 文件名 ]
echo $?

b、判断当前文件是否存在并且是一个目录
[ -d 文件名 ]
echo $?

[root@mylinux2 shell]# [ 23 -lt 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 24]
-bash: [: 缺少 `]'
[root@mylinux2 shell]# [ 23 -le 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 22 ]
[root@mylinux2 shell]# echo $?
1

04_特殊变量-1.sh是否具有写权限
[root@mylinux2 shell]# [ -w 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0

04_特殊变量-1.sh是否具有可执行的权限
[root@mylinux2 shell]# [ -x 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1

04_特殊变量-1.sh是否是一个常规的文件(file)
[root@mylinux2 shell]# [ -f 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0

04_特殊变量-1.sh是否是一个目录
[root@mylinux2 shell]# [ -d 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1

判断文件04_特殊变量-1.sh是否存在当前目录下
[root@mylinux2 shell]# [ -e 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0


(4)多条件判断
&& 表示前一条命令执行成功时,才执行后一条命令;
|| 表示上一条命令执行失败后,才执行下一条命令

逻辑与
a

[root@mylinux2 shell]# [ 23 -lt 24 ] && echo ok
ok

为什么打印ok?
因为条件表达式中23<24为True,而True 和 另一个条件不能确定整个结果,所以&&后面的echo ok要执行

b、

[root@mylinux2 shell]# [ 25 -lt 24 ] && echo ok
[root@mylinux2 shell]# echo $?
1

为什么执行不正确?
因为条件表达式25<24为False,而False && XXX,XXX为任意的逻辑运算都为False,所以后面的 echo ok 就不用执行了

逻辑或

[root@mylinux2 shell]# [ 25 -lt 24 ] || echo ok
ok

为什么打印ok?
因为条件表达式中25<24为False,而False 和 另一个条件不能确定整个结果,所以 || 后面的echo ok要执行

[root@mylinux2 shell]# [ 23 -lt 24 ] || echo ok
[root@mylinux2 shell]# echo $?
0

为什么执行正确?
因为条件表达式23<24为True,True || XXX,XXX不管是任何逻辑运算,其结果都为True,所以输出为0

4、if判断

1.基本语法

if [ 条件判断式 ];then   
	程序 
fi  

注意事项:
1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
2)if后要有空格

脚本如下:
在这里插入图片描述
执行代码:

[root@mylinux2 shell]# bash 09if判断-1.sh 12
未成年
[root@mylinux2 shell]# bash 09if判断-1.sh 24
青年
[root@mylinux2 shell]# bash 09if判断-1.sh 33
中老年

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/74296.html

(0)

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!