• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            colorful

            zc qq:1337220912

             

            shell中if做比較

            shell中if做比較

            比較兩個字符串是否相等的辦法是:

                if [ "$test"x = "test"x ]; then

                這里的關鍵有幾點:

                1 使用單個等號

                2 注意到等號兩邊各有一個空格:這是unix shell的要求

                3 注意到"$test"x最后的x,這是特意安排的,因為當$test為空的時候,上面的表達式就變成了x = testx,顯然是不相等的。而如果沒有這個x,表達式就會報錯:[: =: unary operator expected

                

                二元比較操作符,比較變量或者比較數字.注意數字與字符串的區別.

                整數比較

                -eq 等于,如:if [ "$a" -eq "$b" ]

                -ne 不等于,如:if [ "$a" -ne "$b" ]

                -gt 大于,如:if [ "$a" -gt "$b" ]

                -ge 大于等于,如:if [ "$a" -ge "$b" ]

                -lt 小于,如:if [ "$a" -lt "$b" ]

                -le 小于等于,如:if [ "$a" -le "$b" ]

                 大于(需要雙括號),如:(("$a" > "$b"))

                >= 大于等于(需要雙括號),如:(("$a" >= "$b"))

                小數據比較可使用AWK

                字符串比較

                = 等于,如:if [ "$a" = "$b" ]

                == 等于,如:if [ "$a" == "$b" ],與=等價

                 注意:==的功能在[[]]和[]中的行為是不同的,如下:

                 1 [[ $a == z* ]] # 如果$a以"z"開頭(模式匹配)那么將為true

                 2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么結果為true

                 3

                 4 [ $a == z* ] # File globbing 和word splitting將會發生

                 5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么結果為true

                 一點解釋,關于File globbing是一種關于文件的速記法,比如"*.c"就是,再如~也是.

                 但是file globbing并不是嚴格的正則表達式,雖然絕大多數情況下結構比較像.

                != 不等于,如:if [ "$a" != "$b" ]

                 這個操作符將在[[]]結構中使用模式匹配.

                 大于,在ASCII字母順序下.如:

                 if [[ "$a" > "$b" ]]

                 if [ "$a" \> "$b" ]

                 注意:在[]結構中">"需要被轉義.

                 具體參考Example 26-11來查看這個操作符應用的例子.

                -z 字符串為"null".就是長度為0.

                -n 字符串不為"null"

                 注意:

                 使用-n在[]結構中測試必須要用""把變量引起來.使用一個未被""的字符串來使用! -z

                 或者就是未用""引用的字符串本身,放到[]結構中。雖然一般情況下可

                 以工作,但這是不安全的.習慣于使用""來測試字符串是一種好習慣.

            if判斷式
            if [ 條件判斷一 ] && (||) [ 條件判斷二 ]; then
            elif [ 條件判斷三 ] && (||) [ 條件判斷四 ]; then
            else
               執行第三段內容程式
            fi

            例如:

             

            root@Bizbox:~# a=0 root@Bizbox:~# b=0 root@Bizbox:~# c=5          root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then > echo success > fi success

            if 使用的表達式

            Primary 意義
            [ -a 文件 ] 如果文件存在為真。
            [ -b 文件 ] 如果 文件 存在 而且 是一個 塊-特殊 文件為真。
            [ -c 文件 ] 為真 如果 文件 存在 而且 是一個 字-特殊 文件。

             

            [ -d 文件 ] 為真 如果 文件 存在 而且 是一個 目錄。
            [ -e 文件 ] 為真 如果 文件 存在。
            [ -f 文件 ] 為真 如果 文件 存在 而且 是一個 普通 文件。
            [ -g 文件 ] 為真 如果 文件 存在 而且 已經設置了他的 SGID 位。
            [ -h 文件 ] 為真 如果 文件 存在 而且 是一個 符號連接。
            [ -k 文件 ] 為真 如果 文件 存在 而且 他的粘住位已經設置。
            [ -p 文件 ] 為真 如果 文件 存在 而且 是一個 已經命名的管道 (F 如果O)。
            [ -r 文件 ] 為真 如果 文件 存在 而且 是可讀的。
            [ -s 文件 ] 為真 如果 文件 存在 而且 比零字節大。
            [ -t FD ] 為真 如果 文件 文件描述符已經打開 而且 指向一個終端。
            [ -u 文件 ] 為真 如果 文件 存在 而且 已經設置了他的 SUID (set user ID)位。
            [ -w 文件 ] 為真 如果 文件 為真 如果 文件 存在 而且 是可寫的。
            [ -x 文件 ] 為真 如果 文件 存在 而且 是可執行的。
            [ -O 文件 ] 為真 如果 文件 存在 而且 屬于有效用戶ID。
            [ -G 文件 ] 為真 如果 文件 存在 而且 屬于有效組ID。
            [ -L 文件 ] 為真 如果 文件 存在 而且 是一個 符號連接。
            [ -N 文件 ] 為真 如果 文件 存在 而且 has been mod 如果ied since it was last read。
            [ -S 文件 ] 為真 如果 文件 存在 而且 是一個 socket。
            [ 文件1 -nt 文件2 ] 為真 如果 文件1 has been changed more recently than 文件2, or 如果
            文件1 存在 而且
            文件2 does not。
            [ 文件1 -ot 文件2 ] 為真 如果 文件1 比 文件2 舊, 或者 文件2 存在而且 文件1 不存在。
            [ 文件1 -ef 文件2 ] 為真 如果 文件1 而且 文件2 refer to the same device 而且 inode
            numbers。
            [ -o 選項名 ] 為真 如果 shell 選項 "選項名" 開啟。
            [ -z STRING ] 為真 如果 "STRING"的長度是零。
            [ -n STRING ] 或者 [ STRING ] 為真 "STRING"的長度是非零值。
            [ STRING1 == STRING2 ] 如果兩個字符串相等為真。 "=" may be used instead of "==" for
            strict POSIX compliance。
            [ STRING1 != STRING2 ] 為真 如果 兩兩個字符串不相等。
            [ STRING1 < STRING2 ] 為真 如果 "STRING1" sorts before "STRING2" lexicographically in the
            current locale。
            [ STRING1 > STRING2 ] 為真 如果 "STRING1" sorts after "STRING2" lexicographically in the
            current locale。
            [ ARG1 OP ARG2 ]
            "OP" 是 -eq, -ne, -lt, -le, -gt or -ge 其中一個。 These arithmetic binary operators
            return 為真 如果 "ARG1" is equal to, not equal to, less than, less than or equal to, greater
            than, or greater than or equal to "ARG2", respectively。 "ARG1" 而且 "ARG2" are
            integers。
            表達式可以借以下操作符組合起來, listed in decreasing order of precedence:
            操作符效果
            [ ! EXPR ] 如果EXPR 為假則為真。
            [ ( EXPR ) ] 返回EXPR 的值。 這樣可以用來忽略正常的操作符優先級。

            posted on 2013-07-06 16:28 多彩人生 閱讀(287) 評論(0)  編輯 收藏 引用 所屬分類: linux program

            導航

            統計

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            91性高湖久久久久| 久久久久青草线蕉综合超碰| 久久99热只有频精品8| 国产欧美久久久精品| 日本高清无卡码一区二区久久| 99久久精品免费看国产一区二区三区 | 色综合久久久久综合体桃花网| 久久久久亚洲Av无码专| 久久99精品久久久久久噜噜 | 久久夜色精品国产| 久久久亚洲欧洲日产国码aⅴ| 99久久国产免费福利| 亚洲精品乱码久久久久久蜜桃不卡| 99久久国产热无码精品免费久久久久| 亚洲国产成人精品91久久久| 久久综合久久综合久久| 国内精品伊人久久久久777| 精品国产婷婷久久久| 久久久久亚洲AV无码专区体验| 中文字幕无码av激情不卡久久| 日本免费一区二区久久人人澡| 无码专区久久综合久中文字幕| 色综合久久天天综线观看| 91精品国产综合久久四虎久久无码一级| 久久婷婷人人澡人人爽人人爱| 亚洲精品综合久久| 久久男人AV资源网站| 国产亚洲精午夜久久久久久| 久久青青草原综合伊人| 99久久久国产精品免费无卡顿| 色欲综合久久躁天天躁蜜桃 | 久久亚洲综合色一区二区三区| 人妻无码精品久久亚瑟影视 | 久久影院午夜理论片无码| 色综合色天天久久婷婷基地| 波多野结衣中文字幕久久| 久久人人妻人人爽人人爽| 久久亚洲美女精品国产精品| 九九久久自然熟的香蕉图片| www久久久天天com| 国产成人久久精品麻豆一区|