亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 >

      Linux shell 比較運(yùn)算符使用方法教程

      時(shí)間: 加城1195 分享

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

        文件比較運(yùn)算符

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

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

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

        -L filename 如果 filename 為符號(hào)鏈接,則為真 [ -L /usr/bin/grep ]

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

        -w filename 如果 filename 可寫(xiě),則為真 [ -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 ]

        字符串比較運(yùn)算符 (請(qǐng)注意引號(hào)的使用,這是防止空格擾亂代碼的好方法)

        -z string 如果 string 長(zhǎng)度為零,則為真 [ -z "$myvar" ]

        -n string 如果 string 長(zhǎng)度非零,則為真 [ -n "$myvar" ]

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

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

        算術(shù)比較運(yùn)算符

        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ù)運(yùn)算符

        + - * / % 表示加減乘除和取余運(yùn)算

        += -= *= /= 同 C 語(yǔ)言中的含義

        位操作符

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

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

        ~ ! 表示非操作

        ^ ^= 表示異或操作

        關(guān)系運(yùn)算符

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

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

        測(cè)試命令

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

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

        -eq 等于則為真。

        -ne 不等于則為真。

        -gt 大于則為真。

        -ge 大于等于則為真。

        -lt 小于則為真。

        -le 小于等于則為真。

        (2)字串測(cè)試:

        = 等于則為真。

        != 不相等則為真。

        -z字串 字串長(zhǎng)度偽則為真。

        -n字串 字串長(zhǎng)度不偽則為真。

        (3)文件測(cè)試:

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

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

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

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

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

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

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

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

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

        條件變量替換:

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

        條件放在{}中.

        (1) ${value:-word}

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

        (2) ${value:=word}

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

        (3) ${value:?message}

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

        (4) ${value:+word}

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

        (5) ${value:offset}

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

        (6) ${#value}

        變量的字符個(gè)數(shù)

        (7) ${value#pattern}

        ${value##pattern}

        去掉value中與pattern相匹配的部分,條件是value的開(kāi)頭與pattern相匹配

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

        (8) ${value%pattern}

        ${value%%pattern}

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

        (9) ${value/pattern/string}

        ${value//pattern/string}

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

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

        #!/bin/bash

        var1="1"

        var2="2"

        下面是“與”運(yùn)算符-a,另外注意,用一個(gè)test命令就可以了,還有if條件后面的分號(hào)

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

        echo "equal"

        fi

        下面是“或”運(yùn)算符 -o,有一個(gè)為真就可以

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

        echo "not equal"

        fi

        下面是“非”運(yùn)算符 !

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

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

        echo "not 1"

        fi

        以上三個(gè)if都為真,所以三個(gè)echo都會(huì)打印

        補(bǔ)充:Linux基本命令

       ?、賚s 意為list 列出當(dāng)前文件夾中的文件

        -l 顯示文件的屬性 可用ll來(lái)表示

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

        ③cd dir 跳躍目錄 -P選項(xiàng) 將路徑中的鏈接文件替換成鏈接指向的文件路徑

        ④pwd 查看當(dāng)前工作的文件夾名 使用-P的選項(xiàng),會(huì)直接進(jìn)入到其中,相當(dāng)于cd

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

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

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

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


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

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

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

      3.linux shell cd命令

      4.linux計(jì)算命令

      5.linux命令分號(hào)&&和&,|和||的用法介紹

      4016905