1. 程式人生 > >shell腳本中的邏輯判斷、文件目錄屬性判斷、 if特殊用法、case判斷

shell腳本中的邏輯判斷、文件目錄屬性判斷、 if特殊用法、case判斷

比較 root 語句 dcb 用戶輸入 格式 判斷表達式 刪除 pre

shell腳本中的邏輯判斷

技術分享圖片

shell腳本中很多都是邏輯判斷,判斷某個數值,判斷某一個文件,或者某個目錄,最後真對判斷的某個結果再去做一些操作,在shll腳本中到處都是邏輯判斷,如果沒有判斷就沒有辦法去做一些操作,不然只能敲命令了,

shell中邏輯判斷的語法

  • 最常見的語法 :if 條件 ; then 語句; fi 他的格式比較特殊if和fi是相對的,正好對應的,then是if怎麽樣然後怎麽樣,這個語法讀起來是如果怎麽樣然後怎麽樣

技術分享圖片

如果a的值大於3軟後怎麽樣

[root@100xuni1 ~]# a=5
[root@100xuni1 ~]# if [ $a -gt 3 ]; then echo ok; fi

技術分享圖片

把上圖寫成shll腳本

技術分享圖片

技術分享圖片

  • if 條件; then 語句; else 語句; fis是滿足條件怎麽樣,不滿足又怎麽樣

a=5,如果a的值大於3,然後echo ok,如果不大於3就echo nook

技術分享圖片

技術分享圖片

  • if …; then … ;elif …; then …; else …; fi a=5如果a大於1,然後echo大於1,在大於1的基礎上然後小於6,然後echo小於6並且大於1,如果這兩個條件都不滿足就nook

技術分享圖片

技術分享圖片

  • 邏輯判斷表達式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 註意到處都是空格

大於用-gt 小於用-lt 等於-eq 不等於-nq
條件可以寫成多個中間用雙&的符號,或者用||符號

文件目錄屬性判斷

技術分享圖片

  • 在shll中通常跟文件,目錄去打交道,所以說對文件和目錄的判斷非常的重要,
    我想判斷一個文件是否存在,和大小,是不是空是不是可寫,在shll腳本中都是可以做到的

[ -f file ]判斷是否是普通文件,且存在

技術分享圖片
技術分享圖片

技術分享圖片

[ -d file ] 判斷是否是目錄,且存在

技術分享圖片

技術分享圖片

[ -e file ] 判斷文件或目錄是否存在

技術分享圖片

技術分享圖片

[ -r file ] 判斷文件是否可讀

技術分享圖片

技術分享圖片

[ -w file ] 判斷文件是否可寫

技術分享圖片

技術分享圖片

[ -x file ] 判斷文件是否可執行

技術分享圖片

技術分享圖片

if特殊用法

技術分享圖片

if [ -z "$a" ]??這個表示當變量a的值是否為空

技術分享圖片

有的時候想的不是太完美,萬一刪除這個文件,就會報錯,這個文件沒有看下圖報錯,

技術分享圖片

判斷下$n有沒有數值,有數值的時候再去做判斷。

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

case判斷

**在shell中還有一種邏輯判斷叫做case,這個語句比if這些還復雜一些,

技術分享圖片

寫個腳本試一試case的作用,這個腳本的目的是讓一個用戶輸入一個數字然後我們用這個腳本去判斷數字的範圍,比如讓你輸入0到100,這個數字表示一個同學的分數,當你輸入這個數字我們就要判斷出來,這個同學的分數是什麽樣的級別,是優秀還是及格,或者不及格

技術分享圖片

技術分享圖片

技術分享圖片

shell腳本中的邏輯判斷、文件目錄屬性判斷、 if特殊用法、case判斷