lyd2004888 发表于 2018-8-26 10:09:15

【shell】Linux shell中括号的用法

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:判断文件是否存在

  例子:
  

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

  -d:判断目录是否存在

  例子:
  

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

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

  例子:
  

# [ -x a.txt ] && echo 0 || echo 1  
1
  

Linux 中括号运用之判断变量

  -n 判断变量值是否为空

  

# [ -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 大于等于

  例子:
  

# [ 1 -gt 2 ] && echo 0 || echo 1  
1
  

  -lt 小于、-le 小于等于

  

# [ 1 -lt 2 ] && echo 0 || echo 1  
0
  

双中括号运用
  常见参数

  =:等于

  例子:
  

# [[ 1 = 2 ]] && echo 0 || echo 1  
1
  

  != 不等于

  例子:
  

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

  以此类推,还有 >,
页: [1]
查看完整版本: 【shell】Linux shell中括号的用法