linux中的if用法和簡單的循環
if用法來一波
今天來一波在linux總if的簡單用法,實用與否還需要自己來判定。上一次在for中沒有提及shell腳本中格式問題,今天來補一下如若知道的,略過就好。。。
在linux中,shell開頭一般是很重要的,但是卻又都是註釋要不要都行!這是為什麽呢?
在上圖中顯示第一行#!/bin/bash (井號後面有感嘆號)表示在什麽環境下執行,若是在bash shell下沒什麽用,但是在csh等其他環境下可能會出現錯誤無法執行的情況,所以第一行還是養成寫腳本好習慣的必需品。橫線中間的則是避免日後再看見腳本時好容易知道腳本是幹嗎的,有什麽用,或者其他人看見時好清楚這個腳本的作用知道怎麽去對待處理這個腳本。
閑扯完該來講講重點了!!!
今天寫的這個if也是很有意思的,那就是可以嵌套。什麽事嵌套呢,就是相當於盒子裏面還有個盒子,裏面的盒子還能裝個盒子。。。。。。。。等等等。。。。。。。。。。。。下面就來簡單的說明一下他的一些用法。
if語法格式大致是這樣的:
if標準開頭,後面跟上判斷語句(判斷語句就是裏面一段代碼,而if去判斷他,當執行退出狀態為0是執行一段代碼,退出狀態不為0跳過這些命令執行另外一段。為不為0我自己感覺就是判斷代碼是否正確),之後換行then 在跟上執行正確後輸出的內容 fi來結束if判斷。下面來舉個例子看看是怎麽判斷的,怎麽輸出的。
一般情況下方括號內會進行判斷,如若裏面語法成立則視為正確輸出
該示例我把var1和var2定義為變量然後用if語句來比較大小,這裏提及一下方括號裏(-ge的意思:是否大於等於)的判斷語句如果var2大於var1變量則會輸出正常輸出結果也就是then部分。
這裏我把文件名該為1了,圖個方便好執行。這是正確輸出結果輸出了echo後面的內容也就是then的部分。
不知道你有沒有想到如果這個輸出結果是錯誤的呢,比如把變量var1和var2的變量位置調換一下。判斷10是否大於20。不用想肯定不大於,這時候會輸出什麽呢。
看到上圖執行結果,為什麽沒有輸出結果呢。那是因為沒有定義判斷結果為假的時候輸出結果是什麽,所以什麽都沒有輸出。接下來就介紹一下else,當括號內為假時候的讓if怎麽輸出為假的結果(不定義就什麽也不輸出)。
判斷10是否大於20,明顯不大於,則執行else內的代碼即輸出“10小於20”。
突然間我想到。。。。。。萬一需要判斷三次呢,比如兩個數字當大於時輸出什麽,小於時輸出什麽,等於時輸出什麽。把等於單獨列舉出來,雖然有可以判斷大於等於或者小於等於的語句。但是我就是不用。
上圖我首先判斷兩個變量是否相等(-eq判斷左右是否相等)
如果相等直接執行then內容跳過else然後結束!不相等跳過then執行else到達else之後進行判斷$var2是否大於$var1若大於執行裏面那個if的then語句,如果不大於則執行第二個if的else。這樣完成了兩次判斷。下面我就將變量var1改為{10,20,30}來看下執行的結果。
把所有可能輸出的結果都輸出了一遍,這樣就可以判斷可能性有三種的情況的語句了。如果有四種或者以上,看著在特定的地方嵌套if就好。
跟嵌套差不多的還有一個elif,第一次看見感覺這不是else和if的結合體嗎。。。。。這種適合來用於多種判斷,最後只有判斷輸出結果為0的才會執行then語句,其他直接跳過。
這次我用了elif自我感覺這個比上面的嵌套在裏面的if要好用啊,只會執行為真的時候then內的命令。執行結果為下(還是改了三次變量var1)
對於判定三次,如果第一次第二次都成立呢?if語句會執行哪個代碼呢。
上圖我把兩個變量都等於20,第一次判定是否大於等於(不大於但是等於也是成立的,但是輸出是大於等於)第二次判定是否等於(也是成立的,但是輸出等於)這樣的判斷語句會輸出什麽呢,不妨試試。
結果指輸出了大於等於,顯然第二次判斷沒有進行。由此可得一個結論那就是直到進行括號內為真(有些判定是否為假的,若為假執行then若為真執行else。並不是一定為真才執行then)的執行完該then語句,其他直接後面的直接跳過不執行結束判斷。
還有一些其他語句,或者和if混用的比如for,while等循環也可以和if一起使用,等到都接觸到了在講一波吧。學習也是循序漸進的過程,一口吃不成個胖子
總的來說if語句還是比較好理解的(自我感覺比C的要簡單,其實都萬變不離其宗),要熟練掌握還是用的多了也就感覺沒什麽了,畢竟熟能生巧啊!
預知後事如何-------
我哪知道後事如何。。。。。。
寫的不周到的地方盡情的指出,反正我也不改(開玩笑)!
本文出自 “mlon客” 博客,請務必保留此出處http://13154101.blog.51cto.com/13144101/1953797
linux中的if用法和簡單的循環