<em id="pn7p8"><acronym id="pn7p8"><u id="pn7p8"></u></acronym></em>

    <th id="pn7p8"></th>

    <button id="pn7p8"></button>

      <dd id="pn7p8"></dd>
      <progress id="pn7p8"><track id="pn7p8"></track></progress>

      Linux培訓
      達內IT學院

      400-111-8989

      Linux 中shell 邏輯運算符、邏輯表達式詳解

      • 發布: 社區會員db2haodb
      • 來源:http://t.cn/RnLIClU
      • 時間:2018-04-19 15:13

      今天小編將為大家帶來關于Linux系統中的shell邏輯運算符、邏輯表達式的詳解,shell的邏輯運算符 涉及有以下幾種類型,因此只要適當選擇,可以解決我們很多復雜的判斷,達到事半功倍效果。對Linux感興趣的小伙伴們,我們一起來看一看吧。

      一、邏輯運算符

      1、邏輯卷標表示意思

      1)關于檔案與目錄的偵測邏輯卷標

      -f常用!偵測『檔案』是否存在eg: if [ -f filename ]

      -d常用!偵測『目錄』是否存在

      -b偵測是否為一個『block檔案』

      -c偵測是否為一個『character檔案』

      -S偵測是否為一個『socket標簽檔案』

      -L偵測是否為一個『symbolic link的檔案』

      -e偵測『某個東西』是否存在!

      2)關于程序的邏輯卷標

      -G偵測是否由GID所執行的程序所擁有

      -O偵測是否由UID所執行的程序所擁有

      -p偵測是否為程序間傳送信息的name pipe或是FIFO(老實說,這個不太懂!)

      3)關于檔案的屬性偵測

      -r偵測是否為可讀的屬性

      -w偵測是否為可以寫入的屬性

      -x偵測是否為可執行的屬性

      -s偵測是否為『非空白檔案』

      -u偵測是否具有『SUID』的屬性

      -g偵測是否具有『SGID』的屬性

      -k偵測是否具有『sticky bit』的屬性

      4)兩個檔案之間的判斷與比較 ;例如[ test file1 -nt file2 ]

      -nt第一個檔案比第二個檔案新

      -ot第一個檔案比第二個檔案舊

      -ef第一個檔案與第二個檔案為同一個檔案(link之類的檔案)

      5)邏輯的『和(and)』『或(or)』

      &&邏輯的AND的意思

      ||邏輯的OR的意思

      2、運算符號 代表意義

      =等于 應用于:整型或字符串比較 如果在[]中,只能是字符串

      !=不等于 應用于:整型或字符串比較 如果在[]中,只能是字符串

      <小于 應用于:整型比較 在[]中,不能使用 表示字符串

      >大于 應用于:整型比較 在[]中,不能使用 表示字符串

      -eq等于 應用于:整型比較

      -ne不等于 應用于:整型比較

      -lt小于 應用于:整型比較

      -gt大于 應用于:整型比較

      -le小于或等于 應用于:整型比較

      -ge大于或等于 應用于:整型比較

      -a  雙方都成立(and) 邏輯表達式 –a邏輯表達式

      -o  單方成立(or) 邏輯表達式 –o邏輯表達式

      -z  空字符串

      -n  非空字符串

      二、邏輯表達式

      1、test命令

      使用方法:test EXPRESSION

      如:

      [root@localhost ~]# test 1 = 1 && echo 'ok'

      ok

      [root@localhost ~]# test -d /etc/ && echo 'ok'

      ok

      [root@localhost ~]# test 1 -eq 1 && echo 'ok'

      ok

      [root@localhost ~]# if test 1 = 1 ; then echo 'ok'; fi

      ok

      注意:所有字符 與邏輯運算符直接用“空格”分開,不能連到一起。

      2、精簡表達式

      []表達式

      [root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'

      ok

      [root@localhost ~]# [ 2 < 1 ] && echo 'ok'

      -bash: 2: No such file or directory

      [root@localhost ~]# [ 2 < 1 ] && echo 'ok'

      [root@localhost ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo 'ok'

      ok

      [root@localhost ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo 'ok'

      -bash: [: missing `]'

      注意:在[]表達式中,常見的>,<需要加轉義字符,表示字符串大小比較,以acill碼 位置作為比較。 不直接支持<>運算符,還有邏輯運算符|| &&它需要用-a[and]–o[or]表示

      [[]]表達式

      [root@localhost ~]# [ 1 -eq 1 ] && echo 'ok'

      ok

      [root@localhost ~]$ [[ 2 < 3 ]] && echo 'ok'

      ok

      [root@localhost ~]$ [[ 2 < 3 && 4 > 5 ]] && echo 'ok'

      ok

      注意:[[]]運算符只是[]運算符的擴充。能夠支持<,>符號運算不需要轉義符,它還是以字符串比較大小。里面支持邏輯運算符:|| &&

      3、性能比較

      bash的條件表達式中有三個幾乎等效的符號和命令:test,[]和[[]]。通常,大家習慣用if [];then這樣的形式。而[[]]的出現,根據ABS所說,是為了兼容><之類的運算符。以下是比較它們性能,發現[[]]是最快的。

      $ time (for m in {1..100000}; do test -d .;done;)

      real 0m0.658s

      user 0m0.558s

      sys 0m0.100s

      $ time (for m in {1..100000}; do [ -d . ];done;)

      real 0m0.609s

      user 0m0.524s

      sys 0m0.085s

      $ time (for m in {1..100000}; do [[ -d . ]];done;)

      real 0m0.311s

      user 0m0.275s

      sys 0m0.036s

      不考慮對低版本bash和對sh的兼容的情況下,用[[]]是兼容性強,而且性能比較快,在做條件運算時候,可以使用該運算符。

      Linux 中shell 邏輯運算符、邏輯表達式詳解

      以上就是小編今天與大家分享的Linux中shell邏輯運算符、邏輯表達式詳解,希望看過本篇文章之后能對你有幫助,想了解更多關于Linux方面的信息,歡迎來達內Linux官網。祝愿你能成為一名優秀的Linux運維工程師。

      【免責聲明:本文圖片及文字信息均由小編轉載自網絡,旨在分享提供閱讀,版權歸原作者所有,如有侵權請聯系我們進行刪除。】

      預約申請免費試聽課

      填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

      上一篇:Linux 中的 5 個 SSH 別名例子
      下一篇:Linux系統學習需要了解的事情

      關于Linux系統中Bash腳本的進階教程

      Linux云計算未來發展怎么樣?

      達內12月份Linux云計算、網絡運維與安全兩大免費訓練營

      達內11月份Linux云計算、網絡運維與安全兩大免費訓練營

      • 掃碼領取資料

        回復關鍵字:視頻資料

        免費領取 達內課程視頻學習資料

      • 視頻學習QQ群

        添加QQ群:1143617948

        免費領取達內課程視頻學習資料

      Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

      選擇城市和中心
      黑龍江省

      吉林省

      河北省

      湖南省

      貴州省

      云南省

      廣西省

      海南省

      高清特黄a大片,日本真人真做爰,特级做人爱C级,免费a级毛片 百度 好搜 搜狗
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>