1. 程式人生 > >linux的shell腳本中if,for,while的解析與應用

linux的shell腳本中if,for,while的解析與應用

linux 循環

linux的shell中有一套自己的流程控制語句,其中包括條件語句(if),循環語句(for,while),它們對我們平時的腳本編寫和命令輸入都有很大的作用,掌握了這些一定會對我們有很大的幫助。

一.if

if是一個條件判斷語句,它的語句結構如下

if [ condition ];then # 中括號內的是條件測試語句,表示如果條件為真,則執行then後面的內容

action #條件為真時需要執行的動作

elif [ condition ];then #執行完上一條的動作後,繼續判斷elif後的條件,若真則執行下一條動作

action #elif條件為真的時候執行的動作

else #若elif後的條件為假時(可以沒有,並且繼續一個新的elif判斷)

action #若elif後的條件為假時,執行的動作

else #若if的條件為假的時候

action #if的條件為假時候,執行的動作

fi #判斷結束

註意:(條件測試語句結束後的]後面應該加上分號,當然也可以不加,不加的話then就要寫到下一行,個人比較喜歡寫到一行,這樣顯得比較整齊規範)


下面是一個用if判斷用戶輸入的年份是否為閏年的腳本例子


技術分享

再來看一個if判斷成績的腳本例子


技術分享

二.for

for 是一個循環結構,它的基本結構如下:

for 變量 in seq字符串 #循環的字符串

do #循環開始

action #循環的內容

done #循環結束

註意:(循環的字符串可以有兩種表述方式,一種是類似C語言的表示方法,但是要加雙層的小括號,如((i=0;i<=100;i++)),表示的自然就是i每次加1,直到大於100後就終止循環,另外一種就是變量加in加變量的數組,如 i in `ls`表示的就是將ls命令所列出的變量一次賦予i)

下面我們來看一個for循環計算1..100的數字的和的腳本


技術分享

再將這個問題用另一種for循環的寫法寫出來


技術分享

三.while循環

while也是一種循環體,它的基本結構如下:

while [condition] #循環的條件

do #循環開始的標誌

action #循環的動作

done #循環結束的標誌

下面來看一個用while循環實現的10到1的倒計時


技術分享

最後,舉上幾個將for,while,if結合使用的例子


1.讓用戶猜一個1-66之間的數字,如果不對,就提示用戶太大還是太小,直到用戶輸對為30


技術分享

我們來看看這段腳本的具體的編寫思想,首先讓用戶輸入一個數字,這裏用到了read命令,read命令是讓用戶輸入一個參數,可以使用-p選項,提示用戶輸入的內容,如 read -p "please input a count(0-66):" count ,這樣寫也是可以的,然後用到了while循環,當用戶輸入的數字符合while後面的條件即用戶輸入的數字是30的時候,就終止循環,並輸出恭喜,你對了,否則就進行do後面的內容,首先if判斷參數是否大於30,如果是就提示輸出數字太大,並且讓用戶重新輸入,否則就判斷參數是否小於30,如果是就提示用戶數字太小哦啊,並讓用戶重新輸入,然後fi結束if語句,再加上done表示while循環結束。

2.一次性添加多個用戶的腳本


技術分享

首先第一行的seq表示前面的變量number會在1到$1之間循環,$1是用戶在執行腳本的時候手動輸入的需要具體添加多少個用戶的一個位置變量,然後do開始執行循環體,使用id 這條命令判斷user$number中的用戶是否有的已經存在,若存在,則提示用戶,否則就執行添加用戶的命令,然後done結束

3.提示用戶輸入一個數字n,並且計算1到n和與乘機後輸出到終端上


技術分享

首先定義兩個變量sum1,sum2分別表示加的和與乘積的和,然後提示用戶輸入一個想要計算的和的範圍,即數字,接著判斷,數字是否小於1 ,如果小於1就提示用戶太小了,在輸入更大的一個數字,如果大於1 ,就執行else後面的for循環的內容,即計算出1到n的所有數字的相加的和與相乘的和,最後fi,if循環結束,輸出相加的和的數字和相乘的和的數字。



本文出自 “11083860” 博客,請務必保留此出處http://11093860.blog.51cto.com/11083860/1965785

linux的shell腳本中if,for,while的解析與應用