- 論壇徽章:
- 1
|
1.條件變量替換:
Bash Shell可以進(jìn)行變量的條件替換,既只有某種條件發(fā)生時(shí)才進(jìn)行替換,替換
條件放在{}中.
(1) ${value:-word}
當(dāng)變量未定義或者值為空時(shí),返回值為word的內(nèi)容,否則返回變量的值.
(2) ${value:=word}
與前者類似,只是若變量未定義或者值為空時(shí),在返回word的值的同時(shí)將
word賦值給value
(3) ${value message}
若變量以賦值的話,正常替換.否則將消息message送到標(biāo)準(zhǔn)錯(cuò)誤輸出(若
此替換出現(xiàn)在Shell程序中,那么該程序?qū)⒔K止運(yùn)行)
(4) ${value:+word}
若變量以賦值的話,其值才用word替換,否則不進(jìn)行任何替換
(5) ${value ffset}
${value ffset:length}
從變量中提取子串,這里offset和length可以是算術(shù)表達(dá)式.
(6) ${#value}
變量的字符個(gè)數(shù)
(7) ${value#pattern}
${value##pattern}
去掉value中與pattern相匹配的部分,條件是value的開(kāi)頭與pattern相匹配
#與##的區(qū)別在于一個(gè)是最短匹配模式,一個(gè)是最長(zhǎng)匹配模式.
( ${value%pattern}
${value%%pattern}
于(7)類似,只是是從value的尾部于pattern相匹配,%與%%的區(qū)別與#與##一樣
(9) ${value/pattern/string}
${value//pattern/string}
進(jìn)行變量?jī)?nèi)容的替換,把與pattern匹配的部分替換為string的內(nèi)容,/與//的區(qū)
別與上同
注意:上述條件變量替換中,除(2)外,其余均不影響變量本身的值
2.變量的算術(shù)運(yùn)算
在Bash Shell中,只能進(jìn)行兩個(gè)整數(shù)間的運(yùn)算,其結(jié)果仍為整數(shù).要進(jìn)行算術(shù)
運(yùn)算,需要使用let命令,語(yǔ)法為:
let expr
expr是一個(gè)包含項(xiàng)和操作符的表達(dá)式,項(xiàng)可以是一個(gè)變量或是一個(gè)整數(shù)常數(shù),
當(dāng)使用整數(shù)常數(shù)時(shí),其默認(rèn)為十進(jìn)制整數(shù),用戶可以用radio#number來(lái)指定其它
形式的整數(shù),其中radio定義了整數(shù)是幾進(jìn)制表示的,number是該整數(shù)的值.若
radio>10,那么數(shù)字字符可從0-9和A-Z.
在表達(dá)式中支持的操作符及其含義為:
+,-,*,/,% 加,減,乘,除,取模
>>,<<,&,^,| 左移,右移,位與,位異或,位或
?: 三元運(yùn)算符.與C語(yǔ)言中的定義一致
~ 取補(bǔ)碼
!,>=,<=,>,<,==,!=,&&,||
=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
表達(dá)式式中也可以使用括號(hào).括號(hào)或運(yùn)算優(yōu)先級(jí)的定義與一般計(jì)算機(jī)語(yǔ)言中的
相同.
let命令具有返回值.當(dāng)計(jì)算結(jié)果(若有多個(gè)表達(dá)式時(shí),以最后一個(gè)為準(zhǔn))為0時(shí),
返回值為1,否則為0.
當(dāng)表達(dá)式中含有shell的特殊字符(如|)時(shí),需要用引用符('或" 將其引用起來(lái).
使用let時(shí)還需要注意的時(shí),對(duì)于let x+y這樣的式子,shell雖然計(jì)算了x+y的值
但卻將結(jié)果丟棄,若不想這樣,可以使用let sum=x+y將x+y的結(jié)果保存在變量sum中
另外還可以使用((和))操作符取代let命令,而且這樣的話,還可以省去對(duì)算術(shù)
表達(dá)式的引用,如果想返回表達(dá)式的值,則需用$(())的格式 |
|