linux中shell下test [ ] 條件運算式使用詳解

來源:互聯網
上載者:User

test 條件運算式說明

檔案符號:

[root@LAMP test]# help test
test: test [expr]
    Evaluate conditional expression.
    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  Unary
    expressions are often used to examine the status of a file.  There
    are string operators as well, and numeric comparison operators.
   
    File operators:
   
      -a FILE        True if file exists.
      -b FILE        True if file is block special.
      -c FILE        True if file is character special.
      -d FILE        True if file is a directory.
      -e FILE        True if file exists.
      -f FILE        True if file exists and is a regular file.
      -g FILE        True if file is set-group-id.
      -h FILE        True if file is a symbolic link.
      -L FILE        True if file is a symbolic link.
      -k FILE        True if file has its `sticky' bit set.
      -p FILE        True if file is a named pipe.
      -r FILE        True if file is readable by you.
      -s FILE        True if file exists and is not empty.
      -S FILE        True if file is a socket.
      -t FD          True if FD is opened on a terminal.
      -u FILE        True if the file is set-user-id.
      -w FILE        True if the file is writable by you.
      -x FILE        True if the file is executable by you.
      -O FILE        True if the file is effectively owned by you.
      -G FILE        True if the file is effectively owned by your group.
      -N FILE        True if the file has been modified since it was last read.
   
      FILE1 -nt FILE2  True if file1 is newer than file2 (according to
                       modification date).
   
      FILE1 -ot FILE2  True if file1 is older than file2.
   
      FILE1 -ef FILE2  True if file1 is a hard link to file2.
   
    String operators:
   
      -z STRING      True if string is empty.
   
      -n STRING
         STRING      True if string is not empty.
   
      STRING1 = STRING2
                     True if the strings are equal.
      STRING1 != STRING2
                     True if the strings are not equal.
      STRING1 < STRING2
                     True if STRING1 sorts before STRING2 lexicographically.
      STRING1 > STRING2
                     True if STRING1 sorts after STRING2 lexicographically.
   
    Other operators:
   
      -o OPTION      True if the shell option OPTION is enabled.
      ! EXPR         True if expr is false.
      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.
      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.
   
      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.
   
    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
   
    Exit Status:
    Returns success if EXPR evaluates to true; fails if EXPR evaluates to
    false or an invalid argument is given.
    -a file
              如果 file 存在則為真。
       -b file
              如果 file 存在且為塊裝置則為真。
       -c file
              如果 file 存在且為字元裝置則為真。
       -d file
              如果 file 存在且是一個目錄則為真。
       -e file
              如果 file 存在則為真。
       -f file
              如果 file 存在且為普通檔案則為真。
       -g file
              如果 file 存在且是設定組ID的 (sgid) 則為真。
       -h file
              如果 file 存在且為符號連結則為真。
       -k file
              如果 file 存在且設定了 ‘‘sticky’’ 位 (粘滯位) 則為真。
       -p file
              如果 file 存在且是一個具名管道 (FIFO) 則為真。
       -r file
              如果 file 存在且可讀則為真。
       -s file
              如果 file 存在且大小大於零則為真。
       -t fd  如果檔案描述符 fd 是開啟的且對應一個終端則為真。
       -u file
              如果 file 存在且是設定使用者ID的 (suid) 則為真。
       -w file
              如果 file 存在且可寫則為真。
       -x file
              如果 file 存在且可執行則為真。
       -O file
              如果 file 存在且為有效使用者ID所擁有則為真。
       -G file
              如果 file 存在且為有效組ID所擁有則為真。
       -L file
              如果 file 存在且為符號連結則為真。
       -S file
              如果 file 存在且為通訊端則為真。
       -N file
              如果 file 存在且上次讀取後被修改過則為真。
       file1 -nt file2
              如果 file1 比 file2 要新 (根據修改日期),或者如果 file1 存在而 file2 不存在,則為真。
       file1 -ot file2
              如果 file1 比 file2 更舊,或者如果 file1 不存在而 file2 存在,則為真。
       file1 -ef file2
              如果 file1 和 file2 指的是相同的裝置和 inode 號則為真。
       -o optname
              如果啟用了 shell 選項 optname 則為真。參見下面對內建命令 set 的 -o 選項的描述中的選項列表。
       -z string
              如果 string 的長度為 0 則為真。
       -n string
       string 如果 string 的長度非 0 則為真。
       string1 == string2
              如果字串相等則為真。= 可以用於使用 == 的場合來相容 POSIX 規範。
       string1 != string2
              如果字串不相等則為真。
       string1 < string2
              如果 string1 在當前語言環境的字典順序中排在 string2 之前則為真。
       string1 > string2
              如果 string1 在當前語言環境的字典順序中排在 string2 之後則為真。
       arg1 OP arg2
              OP 是 -eq, -ne, -lt, -le, -gt, 或 -ge 之一。這些算術二進位操作返回真,如果 arg1 與 arg2 分別是相等,不等,小於,小於或等於,大於,大於或等於關係 。  Arg1   和
              arg2 可以是正/負整數。

shell 條件運算式[ ]說明

equal:在[]中使用-eq、在(())[[]]中使用==;
not-equal:在[]中使用-ne、在(())[[]]中使用!=;
less-than:在[]中使用-lt、在(())[[]]中使用<;
less-than-or-equal:在[]中使用-le、在(())[[]]中使用<=;
greater-than:在[]中使用-gt、在(())[[]]中使用>;
greater-than-or-equal:在[]中使用-ge、在(())[[]]中使用>=;
邏輯操作符:
and:在[]中使用-a、在(())[[]]中使用&&;
or:在[]中使用-o、在(())[[]]中使用||;
!:在[]中使用!、在(())[[]]中使用!;
實驗:=、!=測試

[root@LAMP script]# [ 2 == 2 ] && echo right || echo wrong    #如果2=2,則列印right,否則wrong
right
[root@LAMP script]# [ 2 != 2 ] && echo right || echo wrong    #如果2≠2,則列印right,否則wrong
wrong
[root@LAMP script]# [ 2 == 3 ] && echo right || echo wrong    #如果2=3,則列印right,否則wrong
wrong
[root@LAMP script]# [ 2 -eq 2 ] && echo right || echo wrong 
right
[root@LAMP script]# [ 2 -ne 2 ] && echo right || echo wrong  
wrong
[root@LAMP script]# [ 2 -eq 3 ] && echo right || echo wrong 
wrong
[root@LAMP script]# [[ 2 == 2 ]] && echo right || echo wrong  
right
[root@LAMP script]# [[ 2 != 2 ]] && echo right || echo wrong 
wrong
[root@LAMP script]# [[ 2 == 3 ]] && echo right || echo wrong   
wrong

實驗:<、>測試

[root@LAMP script]# [ 2 -lt 3 ] && echo right || echo wrong 
right
[root@LAMP script]# [ 2 -gt 3 ] && echo right || echo wrong  
wrong
[root@LAMP script]# [[ 2 < 3 ]] && echo right || echo wrong   
right
[root@LAMP script]# [[ 2 > 3 ]] && echo right || echo wrong  
wrong
########################特殊備忘########################

[root@LAMP script]# [ 2 < 3 ] && echo right || echo wrong 
right
[root@LAMP script]# [ 2 > 3 ] && echo right || echo wrong     
right
[root@LAMP script]# [ 2 \< 3 ] && echo right || echo wrong
right
[root@LAMP script]# [ 2 \> 3 ] && echo right || echo wrong 
wrong
########################特殊備忘########################

實驗:<=、>=測試

[root@LAMP script]# [ 2 -le 3 ]  && echo right || echo wrong
right
[root@LAMP script]# [ 2 -ge 3 ]  && echo right || echo wrong  
wrong
[root@LAMP script]# [[ 2 -le 3 ]]  && echo right || echo wrong
right
[root@LAMP script]# [[ 2 -ge 3 ]]  && echo right || echo wrong  
wrong
[root@LAMP script]# [ 2 <= 3 ]  && echo right || echo wrong     
-bash: [: 2: unary operator expected
wrong
[root@LAMP script]# [ 2 >= 3 ]  && echo right || echo wrong 
-bash: [: 2: unary operator expected
wrong
[root@LAMP script]# [[ 2 \<= 3 ]]  && echo right || echo wrong   
-bash: conditional binary operator expected
-bash: syntax error near `\<='
[root@LAMP script]# [[ 2 <= 3 ]]  && echo right || echo wrong 
-bash: syntax error in conditional expression
-bash: syntax error near `3'
[root@LAMP script]# [[ 2 >= 3 ]]  && echo right || echo wrong 
-bash: syntax error in conditional expression
-bash: syntax error near `3'

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.