Linux shell中括号的用法

概述

本文主要介绍Linux中括号的用法,主要包含判断文件和变量。
**注意事项**:中括号两边必须有空格。

使用中括号会涉及到的知识 &&、||

在本文对文件或者变量做判断的时候,可能会多次使用到&&和||这两个符号,所以在我们进入中括号的学习之前首先了解一下这两个符号的作用。

            &&:并 --> 两真才为真,如果有两个条件,第一个为真,那么肯定会判断第二个条件;如果第一个条件为假,那么第二个条件将不会判断。(第一个为真,那么需要判断第二个条件才知道整体结果是否为真,如果第一个条件为假,那么无论第二个条件为真还是假,最终的结果都是假)

例1:
[ 假 ] && echo 1 最终结果无输出,因为第一个条件为假,后面的echo 0不会执行

例2:
[ 真 ] && echo 0 最终的结果为 0 ,因为一个条件为真,肯定会执行第二个条件。

||:且 -->一个为真即是真。如果第一个条件为真,那么不会判断第二个条件(因为一真即真),如果第一个条件为假,那么判断第二个条件(第二个条件如果为真还有机会使得整体的结果为真)

例3:
[ 真 ] || echo 0 # 最终结果无输出,因为第一个条件为真,echo 0 不会执行。

例4:
[ 假 ] || echo 0 #最终的结果输出0

小练习
[ 2 -eq 3 ] && echo 0
[ 2 -eq 3 ] || echo 1
最终输出的结果是?

结果是:1

&& 和 || 的综合使用

先看个小例子:
[ 2 -eq 3 ] && echo 0 || echo 1
最终结果:1
解释:如果 [ ] 的条件为真,那么执行echo 0,如果[ ]的条件为假,那么执行echo 1.

Linux 中括号运用之判断文件

常用参数:

-z:判断文件是否存在

例子:

[root@arppinging ~]# [ -z adsfsfsdfs.txt ] && echo 0 || echo 1
1    # 最终结果为1 ,因为系统中没有存在ads...txt文件

-d:判断目录是否存在

例子:

[root@arppinging ~]# [ -d /var/www ] && echo 0 || echo 1
0    #输出结果为0,因为系统中有/var/www这个目录

-x判断文件是否有执行(x)权限

例子:

[root@arppinging ~]# [ -x a.txt ] && echo 0 || echo 1
1

Linux 中括号运用之判断变量

-n 判断变量值是否为空

[root@arppinging ~]# [ -n $kfjksdfjl ] && echo 0 || echo 1
0    #变量为空,即为9

-eq 判断变量或参数是否相等

例子:

[ 1 -eq 1 ] && echo 0 || echo 1
0  # 1=1 so...

-ne 不等于

例子:

[ 1 -ne 2 ] && echo 0 || echo 1
0  # 1!=2

-gt 大于、-ge 大于等于

例子:

[root@XiaoPeng scripts]# [ 1 -gt 2 ] && echo 0 || echo 1
1

-lt 小于、-le 小于等于

[root@XiaoPeng scripts]# [ 1 -lt 2 ] && echo 0 || echo 1
0

双中括号运用

常见参数

=:等于

例子:

[root@XiaoPeng scripts]# [[ 1 = 2 ]] && echo 0 || echo 1
1

!= 不等于

例子:

[root@XiaoPeng scripts]# [[ 1 != 2 ]] && echo 0 || echo 1
0

以此类推,还有 >,<,<=,>=等参数,这里就不再一一写出来了。