Shell指令碼學習筆記(四)–流程式控制制

來源:互聯網
上載者:User

流程式控制制


Bash Shell中,流程式控制制命令有兩大類:選擇和迴圈。屬於選擇的有:if,case;屬於迴圈的有:for,while,until;命令select既屬於選擇,也屬於迴圈。不管是哪一種,均需進行條件測試,再根據測試結果,決定程式流程進行的方向。

Bash Shell Script可由許多命令組成,每一個命令執行後,都會傳回一個結束狀態值,成功返回0否則非0.Bash內建變數$?用來儲存每個命令執行後傳回的狀態值。

if條件判斷

完整的文法結構是

if 條件測試1; then
命令地區1
elif 條件測試2; then
命令地區2
else
命令地區3
fi


其中elif可以多行數量不限,else只能有一行,也可以沒有

條件測試可以有多種形式,測試結果是真是假,就看其傳回的值是否為0.條件測試的寫法有10種
1 執行某一個命令的結果:可以包含管道命令,其結果狀態為最後一個命令執行的結果
2 傳回某一命令執行結果的相反值:!命令
3 使用複合命令:((算式))  運算結果為0返回假,不為0返回真
4 使用Bash關鍵詞'[['、']]'組成的式子:[[判斷式]]  傳回0為真,非0為假
5 使用內建命令:test 判斷式  真值傳回0,假值傳回1  轉義
6 使用內建命令:[判斷式] 與test相同
7 使用-a、-o進行邏輯組合  a且o或
8 命令1&&命令2
9 命令1||命令2
10 &&和||複用

關於檔案屬性的判斷式

關於字串的條件判斷式

關於算式的條件判斷式

Case

case 待測項 in
樣式串列1) 命令地區1;;
樣式串列2) 命令地區2;;
樣式串列3) 命令地區3;;
...
*) 命令地區;;
esac

樣式串中有好幾個字串時,要用|隔開

樣式串列可寫成'(樣式串列)',或者'樣式串列)',後者更常見。

 

For

for 變數 in 串列

do

命令地區

done

 

串列是一些字串的組合,彼此用$IFS所定義的分割字元(如空格符)隔開,這些字串稱為欄位。

 

in 串列
可以不寫,等同於

for 變數 in $@

do

    命令地區

done

$@代表命令列所有參數

 

另一種for格式

for ((初始條件; 終止條件; 異動項))
do
命令地區
done

 

While

while 條件測試
do
命令地區
done

 

Until

until 條件測試
do
命令地區
done

 

Select命令

select 選項變數 in 串列
do
命令地區
done

 

select命令建立一個列表。列表的選項,即串列中的各個欄位。列表提示符號由Bash的內建變數PS3來定義,預設值#?。只要改變PS3的值,使用者可以自訂提示符號。select會給各個選項一個編號,從1開始遞增。當使用者鍵入編號,選擇其中某一個選項時,該選項的內容就設定給選項變數,而鍵入的編號值則放入REPLY變數中。

若要結束select列表,可在命令地區輸入break命令,或按ctrl-D結束。

 

break和continue

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.