1. 程式人生 > >shell中條件測試常用的語法(一)

shell中條件測試常用的語法(一)

shell中條件測試常用的語法     shell   bash

shell中條件測試常用的語法(一)


  1. 執行條件測試表達式後通常會返回“真”或“假”,就像執行命令後的返回值為0表示真,非0表示假一樣。在bash編程裏,條件測試常用的語法形式如下:

    技術分享

    說明:

    (1)語法1與語法2是等價的,語法3是語法1的擴展;

    (2)語法4常用於計算;

    (3)在[[]](雙中括號)中可以使用通配符等進行模式匹配,這是區別其他幾種語法格式的地方;

    (4)&&,||,>,<等操作符可以應用於[[]]中,在[]中一般用-a,-o,-gt(用於整數),-lt(用於整數),!= 代替上述操作符;

    (5)對於整數的關系運算,也可以使用shell的算數運算符(())。

    建議:工作中使用語法2!

  2. 常用的文件測試操作符

    技術分享

    舉個特殊例子:

    [root@ceshiji ~]# touch wtf

    [root@ceshiji ~]# ll wtf

    -rw-r--r-- 1 root root 0 10月 23 03:25 wtf

    [root@ceshiji ~]# chmod 001 wtf

    [root@ceshiji ~]# ll wtf

    ---------x 1 root root 0 10月 23 03:25 wtf

    [root@ceshiji ~]# [ -r wtf ] && echo 1 || echo 0

    1

    [root@ceshiji ~]# [ -w wtf ] && echo 1 || echo 0

    1

    [root@ceshiji ~]# [ -x wtf ] && echo 1 || echo 0

    1

    說明:wtf這個普通文件沒有可讀可寫的權限,為什麽還會返回1呢?這是因為我們使用的是root賬戶的原因!所以,我們在測試一個文件的讀,寫,執行等屬性,不光是根據文件屬性rwx的標識來判斷,還要看當前執行測試的用戶是否真的可以按照對應的權限操作該文件。

  3. 變量的特殊寫法和問題

    [root@ceshiji ~]# echo $wtf


    [root@ceshiji ~]# [ -e $wtf ] && echo 1 || echo 0

    1

    [root@ceshiji ~]# [ -e "$wtf" ] && echo 1 || echo 0

    0

    說明:變量wtf是不存在的,但[ -e $wtf ]直接判斷時,返回值是1,這與邏輯不符合,所以這個時候變量wtf要加上雙引號"$wtf"。

    對於文件加不加引號結構都是一樣的,如:

    [root@ceshiji ~]# cd /tmp

    [root@ceshiji tmp]# ls

    tmp0F7ZGn tmpcywyqY tmpEAwY35 tmpinHrdN tmpwk_xzo yum.log

    [root@ceshiji tmp]# [ -e /tmp/wutengfei ] && echo 1 || echo 0

    0

    [root@ceshiji tmp]# [ -e "/tmp/wutengfei" ] && echo 1 || echo 0

    0

本文出自 “聖騎士控魔之手” 博客,請務必保留此出處http://wutengfei.blog.51cto.com/10942117/1975410

shell中條件測試常用的語法(一)