幾個shell程式設計小知識(轉)
幾個shell程式設計小知識(轉)[@more@] 一. while 迴圈
while 命令格式
while 條件表
do
命令表
done
執行過程
shell首先執行條件表,如果條件表的最後一條語句的退出狀態為零,則執行盾環體內的命令表,執行完後,再檢查條件表,如果退出狀態為零將繼續執行,如此迴圈往復直到條件表的最後一條語句的退出狀態非零. 退出狀態為零就是條件為真True.
舉例說明 假如shell檔案的內容如下:
Sum=0
i=0
while true #true是系統的關鍵詞 表示真
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
if [ $i = "100" ]
then
break;
fi
done
echo $i $Sum
最後這個程式顯示的是 100 5050
這個程式的運算就是將1到100加起來
下面將這個程式再改動一下
Sum=0
i=0
while [ $i != "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum
改動後的程式運算結果和上面是一樣 但程式比上面的要簡練
在這個迴圈中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行迴圈體內的語句,否則就退出迴圈體,下面還用這個例子.
Sum=0
i=0
until [ $i = "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum
當i不等於100時迴圈 就是當條件為假時迴圈,否則就退出,而第一個例子是當i不等於100
時迴圈,也就是測試條件為真時迴圈.
二.for 迴圈
命令格式:
for 變數 in 名字列表
do
命令列表
done
這裡的名字列表是一個由空格分隔的字串列表,shell在執行for迴圈時每次依次從名字表中取出一個字串賦給迴圈變數作為變數的值.
在寫for語句時,也可以省略in 名字列表部分,這表示用當前的位置引數來代替這時的名字列表.
下面舉個例子
比如在你的電腦中有兩個目錄,一個是aa,一個是bb在這兩個目錄中有5個相同的檔案,但其中一個目錄中的一個或多個檔案剛剛修改過,現在我忘記剛才改的是那幾個檔案 了,那麼我靠梢員冉弦幌掄飭礁瞿柯嫉奈募?橢?懶?程式如下:
for File in a1 a2 a3 a4 a5
do
diff aa/$File bb/$File
done
下面再舉一個不帶名字列表的例子
for File
do
echo $Filw
done
檔案內容儲存在a.sh中 並可執行
我們在執行這個shell程式時命令列如下:
a.sh a1 a2 a3 a4 a5
執行結果如下:
a1
a2
a3
a4
a5
大家從這個例子中可以看到命令列的引數被逐一讀入一次
三.迴圈控制語句
break 命令不執行當前迴圈體內break下面的語句從當前迴圈退出.
continue 命令是程式在本循體內忽略下面的語句,從迴圈頭開始執行.
while 命令格式
while 條件表
do
命令表
done
執行過程
shell首先執行條件表,如果條件表的最後一條語句的退出狀態為零,則執行盾環體內的命令表,執行完後,再檢查條件表,如果退出狀態為零將繼續執行,如此迴圈往復直到條件表的最後一條語句的退出狀態非零. 退出狀態為零就是條件為真True.
舉例說明 假如shell檔案的內容如下:
Sum=0
i=0
while true #true是系統的關鍵詞 表示真
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
if [ $i = "100" ]
then
break;
fi
done
echo $i $Sum
最後這個程式顯示的是 100 5050
這個程式的運算就是將1到100加起來
下面將這個程式再改動一下
Sum=0
i=0
while [ $i != "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum
改動後的程式運算結果和上面是一樣 但程式比上面的要簡練
在這個迴圈中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行迴圈體內的語句,否則就退出迴圈體,下面還用這個例子.
Sum=0
i=0
until [ $i = "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum
當i不等於100時迴圈 就是當條件為假時迴圈,否則就退出,而第一個例子是當i不等於100
時迴圈,也就是測試條件為真時迴圈.
二.for 迴圈
命令格式:
for 變數 in 名字列表
do
命令列表
done
這裡的名字列表是一個由空格分隔的字串列表,shell在執行for迴圈時每次依次從名字表中取出一個字串賦給迴圈變數作為變數的值.
在寫for語句時,也可以省略in 名字列表部分,這表示用當前的位置引數來代替這時的名字列表.
下面舉個例子
比如在你的電腦中有兩個目錄,一個是aa,一個是bb在這兩個目錄中有5個相同的檔案,但其中一個目錄中的一個或多個檔案剛剛修改過,現在我忘記剛才改的是那幾個檔案 了,那麼我靠梢員冉弦幌掄飭礁瞿柯嫉奈募?橢?懶?程式如下:
for File in a1 a2 a3 a4 a5
do
diff aa/$File bb/$File
done
下面再舉一個不帶名字列表的例子
for File
do
echo $Filw
done
檔案內容儲存在a.sh中 並可執行
我們在執行這個shell程式時命令列如下:
a.sh a1 a2 a3 a4 a5
執行結果如下:
a1
a2
a3
a4
a5
大家從這個例子中可以看到命令列的引數被逐一讀入一次
三.迴圈控制語句
break 命令不執行當前迴圈體內break下面的語句從當前迴圈退出.
continue 命令是程式在本循體內忽略下面的語句,從迴圈頭開始執行.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946595/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java培訓分享Java處理異常的幾個小知識程式設計師Java
- 講敘Linux系統之Shell程式設計基礎知識(轉)Linux程式設計
- Java程式設計常用計算機小知識Java程式設計計算機
- 初識shell程式設計程式設計
- shell程式設計(轉)程式設計
- 關於redo的幾個小知識點
- shell知識點小結2
- shell知識點小結1
- Bourne Shell及shell程式設計(轉)程式設計
- unix下幾個有用的小shell指令碼(轉)指令碼
- 值得程式設計師一看的8個冷門小知識程式設計師
- 值得程式設計師一看的 8 個冷門小知識程式設計師
- 【前端詞典】幾個有益的 CSS 小知識前端CSS
- 初識shell指令碼程式設計指令碼程式設計
- korn shell基礎知識(轉)
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- shell程式設計幫助(轉)程式設計
- 9 條 PHP 程式設計小知識及易犯的小錯誤PHP程式設計
- 程式設計基礎知識程式設計
- 程式設計必備知識程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- BASH SHELL 程式設計簡介(轉)程式設計
- 幾個MQTT的知識點MQQT
- Web設計師需要程式設計知識嗎?Web程式設計
- 程式設計師的知識管理程式設計師
- 程式設計師程式設計知識經驗總結程式設計師
- 你不一定知道的幾個前端小知識前端
- 程式設計師必須掌握的五個seo知識程式設計師
- shell基本知識
- C++必知的幾個知識點C++
- 快速提高程式設計技術的幾個小竅門程式設計
- XML 程式設計思想:知識管理的基本 XML 和 RDF 技術:語義知識(轉)XML程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- Linux的shell程式設計(一)(轉)Linux程式設計
- Linux的shell程式設計(二)(轉)Linux程式設計
- Linux的shell程式設計(三)(轉)Linux程式設計
- Linux的shell程式設計(四)(轉)Linux程式設計
- 幾個 Haskell 小程式Haskell