1. 有一類命令會基于變量值或其他命令的結(jié)果等條件使腳本跳過或循環(huán)執(zhí)行命令,這樣的命令通常稱為結(jié)構(gòu)化命令。
2. 結(jié)構(gòu)化命令中l(wèi)inux命令,最基本的類型就是if-then語句。if-then語句格式如下:
if command
then
commands
fi
bash shell的if語句會運行if行定義的那個命令。如果該命令的退出狀態(tài)碼是0.位于then部分的命令就會被執(zhí)行。如果該命令的退出狀態(tài)碼是其他值,那then部分的命令就不會被執(zhí)行,bash shell會繼續(xù)執(zhí)行腳本中的下一個命令。
if-then語句的另一個格式:
if command; then
commands
fi
在要執(zhí)行的命令結(jié)尾加個分號,就可以在同一行使用then語句了。
3. if-then-else語句格式:
if command
then
commands
else
commands
fi
當if語句的命令返回退出狀態(tài)碼0時,then部分中的命令會被執(zhí)行。當if語句中的命令返回非零退出狀態(tài)碼時,bash shell會執(zhí)行else部分中命令。
4. elif語句格式:
if command1
then
commands
elif command2
then
more commands
fi
elif語句行提供了另一個要測試的命令,類似于原始的if語句。如果elif后命令的退出狀態(tài)碼是0,則bash會執(zhí)行第二個then語句部分的命令。
5. test命令提供了在if-then語句中測試不同條件的途徑。
test命令的格式:
test condition
condition是test命令要測試的一系列參數(shù)和值。當用在if-then語句中時,test命令格式是這樣的:
if test condition
then
commands
fi
bash shell還提供了另一種在if-then語句中聲明test命令的方法:
if [ condition ]
then
commands
fi
方括號定義了test命令中用到的條件。注意,你必須在左括號右側(cè)和右括號左側(cè)各加一個空格,否則會報錯。
test命令可以判斷3類條件:
(1) 數(shù)值比較;
(2) 字符串比較;
(3) 文件比較。
6. 使用test命令最常見的情形是對兩個數(shù)值進行比較。
test命令的數(shù)值比較功能:
7.%20%20test命令無法處理變量中存儲的浮點值。bash%20shell能處理的數(shù)僅有整數(shù)。
8.%20%20test命令的字符串比較功能:
9.%20%20使用test命令的大于小于功能經(jīng)常會有兩個問題困擾我們:
(1)%20%20大于小于符號必須轉(zhuǎn)義,否則shell會把它們當做重定向符號而把字符串值當做文件名;
(2)%20%20大于小于順序和sort命令所采用的不同。
10.test命令的文件比較功能:
11.if-then語句允許你使用布爾邏輯來組合測試。有兩種布爾運算符可用:
(1) [ condition1 ] && [ condition2 ];
(2) [ condition1 ] || [ condition2 ]。
第一個布爾運算使用AND布爾運算符來組合兩個條件。要讓then部分的命令執(zhí)行,兩個條件都必須滿足。
第3章vbscript 語句和過程·41·表 3.1 vbscript 語句中的分支語句 if……then……else 語句 select case 語句 二值分支語句 多值分支語句3.1.1.1使用 if……then……else 語句vbscript 中最常用的條件語句就是 if…then…else 語句,一般 if…then…else 語句用 來檢查一個布爾條件,然后根據(jù)結(jié)果為 true 或者 false 執(zhí)行相應的腳本,如果為 truelinux命令,則 執(zhí)行 then 后面的腳本,如果為 false,則執(zhí)行 else 后面的腳本。自增自減運算符的運算對象只能是變量,不能是常量或表達式,n++和n--都相當于n=n+1,但是n++的運算順序是先將n的值作為表達式n++的值,再執(zhí)行n=n+1,++n的運算順序是先執(zhí)行n=n+1,在將n的值作為表達式++n的值。"(這就是為什么會出現(xiàn)“同一張票數(shù)會被打印多次”的問題),之后線程2再對tickets進行減減運算,此時tickets就變成0,但此時cpu又切換到線程1,由于剛才已經(jīng)判斷過了if()條件,而且線程1已經(jīng)完成了“打印”的任務,所以線程1剩余的任務就是將tickets的值進行減減運算,運算后,tickets的值就變成了-1,之后線程1再次去判斷tickets的條件看是否能滿足下次運行的條件,經(jīng)判斷不滿足,此時線程1就結(jié)束了。
12.雙尖括號命令的格式:>
術(shù)語expression可以是任意的數(shù)學賦值或比較表達式。
雙尖括號命令符號:
13.雙方括號命令的格式:[[ expression ]]
雙方括號里的expression使用了test命令中采用的標準字符串進行比較。但它提供了test命令未提供的另一個特性——模式匹配。
在模式匹配中,可以定義一個正則表達式來匹配字符串值。