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
下一篇 2016-08-12

相關推薦

  • Linuxd的發展史

    Linux發展史 Linux誕生:   1991年的八月,一個芬蘭的名為Linus Torvalds的大學生為自己開始寫作一個類似minix,可運行在386上的操作系統尋找志同道合的合作伙伴。FREAX系統后改名Linux。  Linux是什么:   按照Linux開發者的說法,Linux是一個遵循POSIX(注一)標作系統,標…

    Linux干貨 2016-10-14
  • javascript快速入門

    標識符多了一個美元符號python中只有字母和下劃線和數字,數字不能開頭數據類型有number(整形和浮點型),boolean,string,null,undefined(聲明未賦值),symbol(新引入),object類型(基本類型和特殊類型外的其他類型) 引入一個變量要先申明,var a,let b常量類型,聲明時定義,python中不存在const …

    Linux干貨 2018-01-15
  • linux中文本處理工具cat 、less、more、head、tail、cut等使用

    文本內容查看工具:cat和less  cat 使用:查看文件內容          cat  選項      文件        …

    Linux干貨 2016-08-08
  • N24_輝 學習宣言

    我志愿加入馬幫的大家庭。 在此,我堅信有志者事竟成,同時,機會總是留給有準備的人的。 既來之,則安之。我的目標是能在規定的時間內結業,正如馬哥所說:完成比完美更重要! 無論如何,也要完成!fighting!?。?/p>

    Linux干貨 2016-10-24
  • 基于BIND實現的DNS正反解析及主從DNS的配置

    基于BIND實現的DNS正反解析及主從DNS的配置 標簽: DNS正反解析 DNS主從復制 測試環境 準備2臺虛擬機,一臺為主DNS,IP地址為:192.168.103.161。另一臺為從DNS,IP地址為:192.168.103.162兩臺都裝好bind,所需包有:bind,bind-utils,bind-libs 主DNS的配置文件 配置主文件/etc/…

    Linux干貨 2016-04-11
  • N26第二周博客作業

    1、  Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 常見的文件查看命令有:cat,tac,head,tail,more,less,stat,touch 常見的文件管理命令有:cp,mv,rm 常見的目錄管理命令:mkdir,rmdir 以下進行詳細介紹: 1.1  文件查看命令 l  ca…

    Linux干貨 2017-02-03
欧美性久久久久