4.7 參數(shù)置換變量
是另一種為變量賦值的方式,其一般形式是:
變量2=$ {變量1 op 字符串}
其中,op表示操作符,它可以是下列四個(gè)操作符之一:
:- : = : + : ?
變量2的值取決于變量1(參數(shù))是否為空串、利用哪個(gè)操作符以及字符串的取值。
在操作符的前后不留空格。
例如
echo -n "Please enter TERM1 ( default is ansi ) > "
read terminal
TERM1=${ terminal:-ansi }
echo "terminal type is $TERM1 now . "
echo "terminal=$terminal "
4.8 算 術(shù) 運(yùn) 算
bash中執(zhí)行整數(shù)算術(shù)運(yùn)算的命令是let,其語(yǔ)法格式為:
let arg …
其中arg是單獨(dú)的算術(shù)表達(dá)式。它使用C語(yǔ)言中表達(dá)式的語(yǔ)法、優(yōu)先級(jí)和結(jié)合性。除++、--和逗號(hào)(,)之外,所有整型運(yùn)算符都得到支持,此外,還提供了方冪運(yùn)算符“**”。
在算術(shù)表達(dá)式中直接利用名稱(chēng)訪問(wèn)命名的參數(shù),不要前面帶有“$”符號(hào)
let 命令的替代表示形式是:
((算術(shù)表達(dá)式))
例如:
let ″j=i*6+2″
等價(jià)于: ((j=i*6+2))
如果表達(dá)式的值是非0,那么返回的狀態(tài)值是0;否則,返回的狀態(tài)值是1。
當(dāng)表達(dá)式中有shell的特殊字符時(shí),必須用雙引號(hào)將其括起來(lái)。例如,let ″val=a|b″
只有使用 $((算術(shù)表達(dá)式))
形式才能返回表達(dá)式的值
4.9 控制流結(jié)構(gòu)
4.9.1 if語(yǔ)句
if語(yǔ)句用于條件控制結(jié)構(gòu)中,其一般格式為:
if 測(cè)試條件
then 命令1
else 命令2
fi
其中,if、then、else和fi是關(guān)鍵字。例如:
if test -f "$1"
then echo "$1 is an ordinary file . "
else echo "$1 is not an ordinary file . "
fi
if語(yǔ)句中else部分可以缺省。例如,
if test -f "$1"
then echo "$1 is an ordinary file . "
fi
if 語(yǔ)句的else部分還可以是else—if結(jié)構(gòu),則用關(guān)鍵字“elif”代替“else if”。例如,
if test - f "$1"
then pr $1
elif test - d "$1"
then ( cd $1 ; pr * )
else echo "$1 is neither a file nor a directory . "
fi
if的語(yǔ)句的更一般形式是:
if 命令表1
then 命令表2
else 命令表3
fi
4.9.2 條件測(cè)試
條件測(cè)試有三種常用形式:一種是用test 命令,如上所示。另一種是用一對(duì)方括號(hào)將測(cè)試條件括起來(lái)。這兩種形式是完全等價(jià)的。例如,測(cè)試位置參數(shù)$1是否是已存在的普通文件,可寫(xiě)為:
test -f "$1"
也完全可寫(xiě)成:[_ -f "$1“_]
第三種形式是: [[條件表達(dá)式]]
test命令可以和多種系統(tǒng)運(yùn)算符一起使用。這些運(yùn)算符可以分為四類(lèi):文件測(cè)試運(yùn)算符、字符串測(cè)試運(yùn)算符、數(shù)值測(cè)試運(yùn)算符和邏輯運(yùn)算符。
1.有關(guān)文件方面的測(cè)試
下載 (398.66 KB)
2013-5-5 01:15
2.有關(guān)字符串方面的測(cè)試
下載 (276.86 KB)
2013-5-5 01:16
3.有關(guān)數(shù)值方面的測(cè)試
下載 (185.69 KB)
2013-5-5 01:17
4.邏輯運(yùn)算符 上述測(cè)試條件可以在if 語(yǔ)句或循環(huán)語(yǔ)句中單個(gè)使用,也可以通過(guò)邏輯運(yùn)算符把它們組合起來(lái)使用。可以在測(cè)試語(yǔ)句中使用的邏輯運(yùn)算符有:
! 邏輯非( NOT ),它放在任意邏輯表達(dá)式之前,使原來(lái)為真的表達(dá)式變?yōu)榧伲乖瓉?lái)為假的變?yōu)檎。例如?/font> [ ! -r $1 ] , ! test -r “$1”等。 - a 邏輯與( AND ),它放在兩個(gè)邏輯表達(dá)式中間,僅當(dāng)兩個(gè)表達(dá)式都為真時(shí),結(jié)果才為真。例如, [ - f "$myfile" - a - r “$myfile" ] - o 邏輯或( OR ),它放在兩個(gè)邏輯表達(dá)式中間,其中只要有一個(gè)表達(dá)式為真,結(jié)果就為真。例如, [ "$a" -ge 0 -o "$b" -le 100 ] (表達(dá)式) 圓括號(hào),它可以把一個(gè)邏輯表達(dá)式括起來(lái),使之成為一個(gè)整體,優(yōu)先得到運(yùn)算。例如, [ \( "$a" -ge 0 \) -a \( "$b" -le 100 \) ]邏輯表達(dá)式中的條件測(cè)試運(yùn)算符優(yōu)先級(jí)高于“!” 運(yùn)算符,“!” 運(yùn)算符的優(yōu)先級(jí)高于“ -a”運(yùn)算符,“-a”運(yùn)算符高于 “-o”,而且圓括號(hào)( )高于 “-a”
5.特殊條件測(cè)試(1) :表示不做任何事情,其退出值為0。(2)true 表示總為真,其退出值總是0。(3)false 表示總為假,其退出值是255。
|