精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

      Linux shell 比較運算符使用方法教程

      時間: 加城1195 分享

        Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。對于Linux基礎(chǔ),肯定要掌握的是基本命令和一些重要運算符,這篇文章主要介紹了Linux shell 比較運算符詳解,需要的朋友可以參考下

        文件比較運算符

        -e filename 如果 filename 存在,則為真 [ -e /var/log/syslog ]

        -d filename 如果 filename 為目錄,則為真 [ -d /tmp/mydir ]

        -f filename 如果 filename 為常規(guī)文件,則為真 [ -f /usr/bin/grep ]

        -L filename 如果 filename 為符號鏈接,則為真 [ -L /usr/bin/grep ]

        -r filename 如果 filename 可讀,則為真 [ -r /var/log/syslog ]

        -w filename 如果 filename 可寫,則為真 [ -w /var/mytmp.txt ]

        -x filename 如果 filename 可執(zhí)行,則為真 [ -L /usr/bin/grep ]

        filename1 -nt filename2 如果 filename1 比 filename2 新,則為真 [ /tmp/install/etc/services -nt /etc/services ]

        filename1 -ot filename2 如果 filename1 比 filename2 舊,則為真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

        字符串比較運算符 (請注意引號的使用,這是防止空格擾亂代碼的好方法)

        -z string 如果 string 長度為零,則為真 [ -z "$myvar" ]

        -n string 如果 string 長度非零,則為真 [ -n "$myvar" ]

        string1 = string2 如果 string1 與 string2 相同,則為真 [ "$myvar" = "one two three" ]

        string1 != string2 如果 string1 與 string2 不同,則為真 [ "$myvar" != "one two three" ]

        算術(shù)比較運算符

        num1 -eq num2 等于 [ 3 -eq $mynum ]

        num1 -ne num2 不等于 [ 3 -ne $mynum ]

        num1 -lt num2 小于 [ 3 -lt $mynum ]

        num1 -le num2 小于或等于 [ 3 -le $mynum ]

        num1 -gt num2 大于 [ 3 -gt $mynum ]

        num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

        算術(shù)運算符

        + - * / % 表示加減乘除和取余運算

        += -= *= /= 同 C 語言中的含義

        位操作符

        > >>= 表示位左右移一位操作

        & &= | |= 表示按位與、位或操作

        ~ ! 表示非操作

        ^ ^= 表示異或操作

        關(guān)系運算符

        = == != 表示大于、小于、大于等于、小于等于、等于、不等于操作

        && || 邏輯與、邏輯或操作

        測試命令

        test命令用于檢查某個條件是否成立,它可以進行數(shù)值、字符和文件3個方面的測試,其測試符和相應(yīng)的功能分別如下。

        (1)數(shù)值測試:

        -eq 等于則為真。

        -ne 不等于則為真。

        -gt 大于則為真。

        -ge 大于等于則為真。

        -lt 小于則為真。

        -le 小于等于則為真。

        (2)字串測試:

        = 等于則為真。

        != 不相等則為真。

        -z字串 字串長度偽則為真。

        -n字串 字串長度不偽則為真。

        (3)文件測試:

        -e文件名 如果文件存在則為真。

        -r文件名 如果文件存在且可讀則為真。

        -w文件名 如果文件存在且可寫則為真。

        -x文件名 如果文件存在且可執(zhí)行則為真。

        -s文件名 如果文件存在且至少有一個字符則為真。

        -d文件名 如果文件存在且為目錄則為真。

        -f文件名 如果文件存在且為普通文件則為真。

        -c文件名 如果文件存在且為字符型特殊文件則為真。

        -b文件名 如果文件存在且為塊特殊文件則為真

        條件變量替換:

        Bash Shell可以進行變量的條件替換,既只有某種條件發(fā)生時才進行替換,替換

        條件放在{}中.

        (1) ${value:-word}

        當變量未定義或者值為空時,返回值為word的內(nèi)容,否則返回變量的值.

        (2) ${value:=word}

        與前者類似,只是若變量未定義或者值為空時,在返回word的值的同時將 word賦值給value

        (3) ${value:?message}

        若變量已賦值的話,正常替換.否則將消息message送到標準錯誤輸出(若此替換出現(xiàn)在Shell程序中,那么該程序?qū)⒔K止運行)

        (4) ${value:+word}

        若變量已賦值的話,其值才用word替換,否則不進行任何替換

        (5) ${value:offset}

        ${value:offset:length} 從變量中提取子串,這里offset和length可以是算術(shù)表達式.

        (6) ${#value}

        變量的字符個數(shù)

        (7) ${value#pattern}

        ${value##pattern}

        去掉value中與pattern相匹配的部分,條件是value的開頭與pattern相匹配

        #與##的區(qū)別在于一個是最短匹配模式,一個是最長匹配模式.

        (8) ${value%pattern}

        ${value%%pattern}

        于(7)類似,只是是從value的尾部于pattern相匹配,%與%%的區(qū)別與#與##一樣

        (9) ${value/pattern/string}

        ${value//pattern/string}

        進行變量內(nèi)容的替換,把與pattern匹配的部分替換為string的內(nèi)容,/與//的區(qū)別與上同

        注意: 上述條件變量替換中,除(2)外,其余均不影響變量本身的值

        #!/bin/bash

        var1="1"

        var2="2"

        下面是“與”運算符-a,另外注意,用一個test命令就可以了,還有if條件后面的分號

        if test $var1 = "1"-a $var2 = "2" ; then

        echo "equal"

        fi

        下面是“或”運算符 -o,有一個為真就可以

        if test $var1 != "1" -o $var2 != "3" ; then

        echo "not equal"

        fi

        下面是“非”運算符 !

        if條件是為真的時候執(zhí)行,如果使用!運算符,那么原表達式必須為false

        if ! test $var1 != "1"; then

        echo "not 1"

        fi

        以上三個if都為真,所以三個echo都會打印

        補充:Linux基本命令

       ?、賚s 意為list 列出當前文件夾中的文件

        -l 顯示文件的屬性 可用ll來表示

       ?、赼lias 別名 看看是否有別名的文件

       ?、踓d dir 跳躍目錄 -P選項 將路徑中的鏈接文件替換成鏈接指向的文件路徑

        ④pwd 查看當前工作的文件夾名 使用-P的選項,會直接進入到其中,相當于cd

        相關(guān)閱讀:Linuxshell腳本不執(zhí)行問題實例分析

        shell腳本不執(zhí)行問題:某天研發(fā)某同事找我說幫他看看他寫的shell腳本,死活不執(zhí)行,報錯。我看了下,腳本很簡單,也沒有常規(guī)性的錯誤,報“:badinterpreter:Nosuchfileordirectory”錯??催@錯,我就問他是不是在windows下編寫的腳本,然后在上傳到linux服務(wù)器的……果然。原因:在DOS/windows里,文本文件的換行符為rn,而在*nix系統(tǒng)里則為n,所以DOS/Windows里編輯過的文本文件到了*nix里,每一行都多了個^M。解決:

        1)重新在linux下編寫腳本;

        2)vi:%s/r//g:%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)附:sh-x腳本文件名,可以單步執(zhí)行并回顯結(jié)果,有助于排查復(fù)雜腳本問題。


      Linux shell 比較運算符相關(guān)文章:

      1.linux shell腳本執(zhí)行命令

      2.深度LinuxDeepin/Unix、Linux shell命令

      3.linux shell cd命令

      4.linux計算命令

      5.linux命令分號&&和&,|和||的用法介紹

      4016905