1. 程式人生 > >我的shell腳本編程

我的shell腳本編程

編程 shell 語言

對於shell腳本編程特點來說它是

過程式編程語言、腳本類型語言、解釋型語言。

在寫腳本的時候總是會遵循三種執行結構:順序執行結構、選擇執行結構、循環執行結構。

順序執行即:以從左到右,從上到下順序執行所有的語句(命令)

選擇執行結構:依照給定條件的邏輯判斷結果或者依照可選的取值範圍,進而選擇某個分支中的語句來執行;

有if:分支選擇標準;邏輯判斷的結果;

case:分支選擇標準;根據可選的取值;

循環執行結構:對於某特定語句,重復執行0次,1次或多次;

有for:遍歷指定的列表

while:根據邏輯判斷的結果

until:根據邏輯判斷的結果

select:死循環,利用循環機制提供選擇列表

----------------------------------------------------------

if結構通常來說有雙分支和多分支結構

無非就是在if下又添加了elif 例如

if CONDITION1 ; then

STATEMENT

...

elif CONDITION2 ; then

STATEMENT

...

elif CONDITION3 ; then

STATEMENT

...

...

else

STATEMENT

...

fi

case 語句使用來 在給出不同的參數時做出不同的結果

case 變量引用 in

模式1)

分支1

;;

摸式2)

分支2

;;

...

*)

默認分支

;;

esac

在這裏的模式可有很多種匹配方式

1.普通的文本字符

2.globbing風格的通配符

*:任意長度任意字符

?:任意的單個字符

[]:範圍內的任意單個字符

[^]:範圍外的任意單個字符

3.| :或

for 循環有兩種格式

1.遍歷列表

for VAAR_NAME in LIST ; do

循環體

done

這個列表LIST的可以:

1):直接寫出

2): 純整數列表

seq:輸出一個整數列表

seq [FIRST [INCREMENT]] LAST

3) :花括號展開

{FIRST..LAST}

{0..100..3} 顯示0-100中能被3整除的數字

4) : 命令的執行結果返回值

5):GLOBBING(通配符)

6): 某些變量的引用:$@,$*

2.控制變量的格式

for (( 表達式1; 表達式2; 表達式3 )); do

((循環體))

done

表達式1:為變量賦初始值

表達式2:循環的退出條件

表達式3:變量值的變換規律

while、until循環:

while CONDITION ; do

循環體

done

進入循環的條件:CONDITON一直為真;

退出循環條件:CONDITON為假

-------------------

until CONDITION ; do

循環體

done

進入循環的條件:CONDITON一直為假;

退出循環條件:CONDITON為真

註意:對於while和until兩個循環結構來講,如果要實施變量增量操作,必須手動給出;

例如:利用while和until循環結構,計算100以內所有整數和;

#!/bin/bash

#

declare -i I=1

while [ $I -le 100 ] ; do

let SUM+=$I

let I++

done

對於循環語句 還有一個無限循環的用法

while true ;do

循環體

done


until false ;do

循環體

done


在此類的循環結構中,必須適當的使用continue和break,以保證循環不會一直持續下去;

continue:

continue [n]

提前技術第n層的本次循環,直接進入下一輪條件判斷,若符合循環進入條件,則開啟下一輪循環;

break:

break [n]

提前結束第n層循環;不再繼續後續循環;

還有一個實現遍歷功能的while、until循環 用於對文件的每一行讀取操作

while read LINES ; do

循環體

done < /PANTH/FROM/SOMEFILE

until ! read LINES ; do

循環體

done < /PATH/FROM/SOMEFILE


select

select循環主要用於創建一個菜單式列表,供用戶進行選擇;

列表是按照數字順序排列的,我們只要選擇數字即可;


一般來講,select與case一起使用;


select是一個無限循環結構,因此,必須在循環體中使用break命令以退出循環,或者可以使用exit命令直接終止腳本。


select NAME [in 詞語 ... ;] do 命令; done


select NAMl6E [in lsit ] ; do

命令

done

對於和用戶交互式的命令read

read命令:

read [-a 數組] [-p 提示符] [-t 超時] [名稱 ...]

名稱一般為變量名或數組名;如果不寫名稱,則系統會將read讀到的信息保存在REPLY變量中;


註意:在使用read命令的時候,通常會使用-t選項來規定超時時間;一旦使用-t選項定義了超時時間,我們必須在後面判斷給定的變量是否為空,如果為空需要為變量提供默認值;


取隨機數 8以內的

echo $[$RANDOM%8]



本文出自 “12445165” 博客,謝絕轉載!

我的shell腳本編程