標籤:運算式
SHELL指令碼編程---判斷
1、條件判斷
條件判斷在bash分為整數判斷,字元判斷和檔案判斷。
1-1條件判斷的運算式: ① [ expression ] (注意單詞詞頭和詞尾都需要空格)
② [[ expression ]](注意同上)
③ test expression
1-2 整數比較
① -eq 測試兩個數是否相等,相等為真,不等為假
② -ne 測試兩個數是否不等, 反之。
③ -gt (大於),-lt (小於),-ge(大於或等於),-le(小於或等於)
邏輯與:&& 邏輯或: ||
2、條件判斷,控制結構
if 判斷條件;then
statement1
statement2
statement3
………
fi 單分支if語句。
雙分支的if語句
if 判斷條件;then
statement1
else
statement2
fi
命令執行狀態傳回值:0為真,其他數值全為假。
==================以下全部都為練習例題===============
邏輯判斷題1、
1、如果使用者不存在,則添加使用者
id USERNAME &> /dev/null || useradd USERNAME
(一般在指令碼中定義的變數內容,指令碼執行結束,變數就會被撤銷)
邏輯判斷2、
1、如果使用者存在,就顯示使用者已經存在,否則就添加此使用者。
id newuser && echo “newuser exists” || useradd newuser
邏輯判斷3、
1、如果使用者不存在,就要添加使用者,否則就顯示使用者已存在
id newuser &> /dev/null && echo “newuser exist” || useradd newuser
邏輯判斷4、
如果使用者不存在,添加還給密碼,否則,顯示使用者已經存在
id newuser2 && echo “newuser2 exists” || useradd newuser2 && echo “newuser2” | passwd --stdin newuser2
條件判斷練習題:
添加三個使用者,user1-user3。需要提前判斷使用者是否存在,並顯示添加了幾個使用者。最後顯示當前系統上使用者的數量
練習題二:
寫一個指令碼,使用一個變數儲存使用者名稱,判斷其是否存在先,而且如果其UID為0,就說它是管理員,如果不為0就說它們是普通使用者。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_14155247635IJw.png" width="530" height="265" />
寫一個簡單指令碼,完成如下的任務、
使用一個變數儲存使用者名稱,刪除變數中的使用者,以及它的家目錄,顯示“刪除成功”資訊。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524763S1Yt.png" width="523" height="190" />
練習題三:
判斷當前系統上是否有使用者預設的shell為bash,如果有,就顯示有多少個這樣的使用者,否則,就顯示沒有。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524764G4fX.png" width="563" height="253" />
========(注意:這裡面有個叫RETVAL=$? 這個寫在那個命令語句後面,執行的就是哪個後面的命令執行狀態返回結果。)=========
練習題四:
判斷當前系統上是否有使用者預設的shell為bash,如果有,就顯示其中的一個使用者名稱,否則,就顯示沒有。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524764C8YC.png" width="567" height="238" />
練習四:寫指令碼,給定一個檔案,如/etc/inittab,判斷檔案中是否有空白的行,如果有,顯示空白行數,否則,顯示沒有空白行。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524765yN51.png" width="578" height="228" />
練習四改進:寫指令碼,讓使用者隨便輸入一個檔案,判斷該檔案是否有效,如果有效,則顯示其空白的行,否則,顯示沒有空白行。
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524766C5rm.png" width="582" height="301" />
練習五:隨便給一個使用者,判斷它的UID和GID是否一致,如果一致,顯示使用者為”good guy“
否則,顯示為bad guy
650) this.width=650;" style="border-right- 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524767TlX6.png" width="583" height="259" />
練習六:判定命令曆史中曆史命令的總條目是否大於等於1000,如果大於等於1000,則顯示“need clean up”,否則顯示“ok!”
650) this.width=650;" style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524767Y9Ch.png" "588" height="174" />或者是650) this.width=650;" style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://img1.51cto.com/attachment/201411/9/6249823_1415524767GZUF.png" "587" height="185" />
Shell指令碼編程---條件判斷if