bash-條件測試

                 條件測試

1.條件測試 

        ? 判斷某需求是否滿足,需要由測試機制來實現;

        專用的測試表達式需要由測試命令輔助完成測試過程;

            ? 評估布爾聲明,以便用在條件性執行中

            ? 若真,則返回0

            ? 若假,則返回1

2.測試命令:

        ? test EXPRESSION

        ? [ EXPRESSION ]

        ? [[ EXPRESSION ]]

        注意: EXPRESSION前后必須有空白字符

3.條件性的執行操作符

        ? 根據退出狀態而定,命令可以有條件地運行

            ? && 代表條件性的 AND THEN

            ? || 代表條件性的 OR ELSE

        ? 例如:

        $ grep -q no_such_user /etc/passwd || echo 'No such user' No such user

        $ ping -c1 -W2 station1 &> /dev/null && echo "station1 is up" \

             > || (echo 'station1 is unreachable'; exit 1)

            station1 is up

    若ping -c1 -W2 station1執行成功,則echo "station1 is up",否則echo 'station1 is unreachable'; exit 


4.test命令

        ? 長格式的例子:

            $ test "$A" == "$B" && echo "Strings are equal"

            $ test “$A” -eq “$B”&& echo "Integers are equal"

        ? 簡寫格式的例子:

            $ [ "$A" == "$B" ] && echo "Strings are equal"

            $ [ "$A" -eq "$B" ] && echo "Integers are equal"

5.bash的測試類型

         數值測試:(注意前面有“-”)

            gt: 是否大于;             greater than

            -ge: 是否大于等于;      greater equal

            -eq: 是否等于; equal

            -ne: 是否不等于; not equal

            -lt: 是否小于; less than

            -le: 是否小于等于; less equal

            eg:   [ "$A" -eq "$B" ]

         字符串測試:

            ==:是否等于;

            >: ascii碼是否大于ascii碼

            <: 是否小于

            !=: 是否不等于

            =~: 左側字符串是否能夠被右側的PATTERN所匹配

            注意: 此表達式一般用于[[ ]]中;

            -z "STRING":字符串是否為空,空為真,不空為假

            -n "STRING":字符串是否不空,不空為真,空為假

            注意:用于字符串比較時的用到的操作數都應該使用引號

        文件測試

            ? 存在性測試

                -a FILE:同-e

                -e FILE: 文件存在性測試,存在為真,否則為假;

            ? 存在性及類別測試

                -b FILE:是否存在且為塊設備文件;

                -c FILE:是否存在且為字符設備文件;

                -d FILE:是否存在且為目錄文件;

                -f FILE:是否存在且為普通文件;

                -h FILE 或 -L FILE:存在且為符號鏈接文件;

                -p FILE:是否存在且為命名管道文件;

                -S FILE:是否存在且為套接字文件;

            ? 文件權限測試:

                -r FILE:是否存在且可讀

                -w FILE: 是否存在且可寫

                -x FILE: 是否存在且可執行

            ? 文件特殊權限測試:

                -g FILE:是否存在且擁有sgid權限;

                -u FILE:是否存在且擁有suid權限;

                -k FILE:是否存在且擁有sticky權限;

            ? 文件大小測試:

                -s FILE: 是否存在且非空;

            ? 文件是否打開:

                -t fd: fd表示文件描述符是否已經打開且與某終端相關

                -N FILE:文件自動上一次被讀取之后是否被修改過

                -O FILE:當前有效用戶是否為文件屬主

                -G FILE:當前有效用戶是否為文件屬組

6.雙目測試:

        FILE1 -ef FILE2: FILE1與FILE2是否指向同一個設備上的相同inode

        FILE1 -nt FILE2: FILE1是否新于FILE2;

        FILE1 -ot FILE2: FILE1是否舊于FILE2;

7.組合測試條件

        ? 第一種方式:

            COMMAND1 && COMMAND2 并且

            COMMAND1 || COMMAND2 或者

            ! COMMAND 非

            如: [ -e FILE ] && [ -r FILE ]

        ? 第二種方式:

            EXPRESSION1 -a EXPRESSION2 并且

            EXPRESSION1 -o EXPRESSION2 或者

            ! EXPRESSION  非

            (使用單括號)

        必須使用測試命令進行

        [ -z “$HOSTNAME” -o  ”$HOSTNAME " == "localhost.localdomain" ] && hostname www.magedu.com

         [ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab

        

原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/33706

(0)
ldt195175108ldt195175108
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相關推薦

  • 數據結構知識點(list,tuple,冒泡法)

    分類 數值型 int、float、complex、bool 序列對象 字符串str、列表list、tuple 鍵值對 集合set、字典dict 數值型 complex:有實數和虛數部分組成 float:有整數和小數組成。只有雙精度 類型轉換 int(X) 返回一個整數 float(x) 返回一個浮點數 complex(x)、complex(x,y) 返回一個…

    2017-09-25
  • linux下正則表達式的學習

    linux 下正則表達式用法總結 正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。簡單的說,正則表示式就是處理字符串的方法。常用來匹配字符的元字符總結如下: Paste_Image.png 有了以上這些元字符原則上可以搜索出任務想要表達的字符,可為了更靈活使用,往往還要搭配一些次數匹配的用法 Paste_Image.png 例如:a&nbsp…

    Linux干貨 2017-06-04
  • ?mysql備份之lvm

    mysql備份之lvm 新建一個lvm磁盤,這里我建的lv為mydatalv,掛載到了/data下 [root@localhost ~]# lvs   LV       VG     Attr&nbs…

    Linux干貨 2016-07-19
  • 回溯法 -數據結構與算法

    1.回溯法算法思想: 定義:         回溯法(探索與回溯法)是一種選優搜索法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇并不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。 1、回溯法適用:有許多問題,當需要找出它的解集(…

    Linux干貨 2015-04-07
  • 第一周記錄

    列出Linux的發行版,描述不同發行版之間的聯系與區別。    發行版多達100多種,其中主要的有Debian旗下的Ubuntu、knopix,Slackware旗下的S.u.S.E,RedHat公司旗下的RedHat、CentOS、Fedora。其中各個版本之間的區別:包管理器的區別;但其內核都是Linux內核。 ifconfig: 查…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班21期第10周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) POST加電自檢—— 根據bios設定,順序查找引導設備—— 讀取引導設備MBR(共512字節,前446為bootloader,后64表示分區信息,后2表示bootloader有效性),加載bootloader程序—— 以grub為例,grub1.0階段將零磁道一扇區加載到內存,gr…

    Linux干貨 2016-10-24
欧美性久久久久