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