標籤:編程 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): 某些變數的引用:[email protected],$*
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指令碼編程