bash算數(shù)運(yùn)算和條件測(cè)試語(yǔ)句-創(chuàng)新互聯(lián)

一、利用bash腳本編程實(shí)現(xiàn)算術(shù)運(yùn)算:

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)梅州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

 1)

   +、-:加運(yùn)算

*、/

%:模運(yùn)算,取余數(shù)

**|^

 2)增強(qiáng)型的算術(shù)運(yùn)算符號(hào):

+= :let B=B+2  --> let B+=2

-= :let B=B-2 --> let B-=2

*= :let B=B*2 --> let B*=2

/= :let B=B/2 --> let B/=2

%= :let B=B%2 --> let B%=2

 3)特殊的增強(qiáng)型算術(shù)運(yùn)算:

let B=B+1  --> let B+=1  --> let B++

let B=B-1  --> let B-=1  --> let B--

B++:先將B的值賦給其他變量,然后再自身+1;

++B:先做自身+1計(jì)算,然后再將B的值賦給其他變量;

算術(shù)運(yùn)算方法:

1.let VAR=算術(shù)表達(dá)式

將算術(shù)表達(dá)式先行進(jìn)行算術(shù)運(yùn)算,并將運(yùn)算得到的結(jié)果保存到變量VAR中;

2.VAR=$[算術(shù)表達(dá)式]

算術(shù)表達(dá)式中如果有變量引用,可以使用$引用,也可以省略$;

SUM=$[C+B]相當(dāng)于SUM=$[$C+$B]

3.VAR=$((算術(shù)表達(dá)式))

算術(shù)表達(dá)式中如果有變量引用,可以使用$引用,也可以省略$;

4.expr ARGU1 ARGU2 ARGU3

ARGU1和ARGU3必須是數(shù)值;

ARGU2必須是運(yùn)算符號(hào)

5.echo “算是表達(dá)式” | bc

注意:*號(hào),在某些情況下,需要轉(zhuǎn)義;

變量:存儲(chǔ)數(shù)據(jù)的容器

弱變量:弱類型變量,字符型(默認(rèn)),數(shù)值型(不包括浮點(diǎn)型)

二、條件測(cè)試命令:

test EXPRESSION

shell內(nèi)建命令;

[ EXPRESSION ]

外部命令[ ;

` EXPRESSION `

bash的內(nèi)部關(guān)鍵字;

  /////注意:這類命令一般沒(méi)有執(zhí)行結(jié)果,只有執(zhí)行狀態(tài)返回值;test一般有兩種格式,使用方括號(hào)時(shí),要注意在條件兩邊加上空格:

test測(cè)試命令有三類測(cè)試表達(dá)式:

1.數(shù)值測(cè)試:雙目操作符

-eq :被測(cè)試的兩個(gè)數(shù)值是否相等,相等為真,不等為假;

-ne :被測(cè)試的兩個(gè)數(shù)值是否不相等,不等為真,相等為假;

-gt :被測(cè)試的兩個(gè)數(shù)值,左邊的是否大于右邊的,大于為真,不大于為假;

-lt :被測(cè)試的兩個(gè)數(shù)值,左邊的是否小于右邊的,小于為真,不小于為假;

-ge :被測(cè)試的兩個(gè)數(shù)值,左邊的是否大于等于右邊的,大于等于為真,小于為假;

-le :被測(cè)試的兩個(gè)數(shù)值,左邊的是否小于等于右邊的,小于等于為真,大于為假;

例子:~/aaa的大小是否小于1000字節(jié);

[root@mylab1 ~]# [ $(ls -l aaa | awk '{print $5}') -lt 1000 ] && echo OK || echo "bu OK"

OK

2.字符串測(cè)試

1)雙目操作符:

 ==|= :被測(cè)試的兩個(gè)字符串是否相同,相同為真,不同為假;

 != :被測(cè)試的兩個(gè)字符串是否不相同,不同為真,相同為假;

 > :被測(cè)試的兩個(gè)字符串在ASCII碼表中對(duì)應(yīng)的二進(jìn)制數(shù)值,左邊是否大于右邊,大于為真,小于為假;

 < :被測(cè)試的兩個(gè)字符串在ASCII碼表中對(duì)應(yīng)的二進(jìn)制數(shù)值,左邊是否小于右邊,小于為真,大于為假;

注意:>和<必須用在` EXPRESSION `測(cè)試語(yǔ)句中;

 =~ :被測(cè)試的兩個(gè)字符串,左側(cè)字符串能否被右側(cè)的PATTERN匹配,能匹配為真,不能匹配為假;

單目操作符:

 -z 'STRING':判斷指定的字符串是否為空串,空為真,不空為假;

 -n 'STRING':判斷指定的字符串是否為非空串,非空為真,空為假;

注意:

 1.通常情況下,字符串要加引號(hào),單引號(hào)或雙引號(hào)都行,根據(jù)實(shí)際情況選擇即可;

 2.[[]]和[]在某些情況下,可能意義不同,要區(qū)分使用;

 3.表達(dá)式兩端以及操作符兩端都要有空格;

3.文件狀態(tài)測(cè)試

單目測(cè)試:

文件的存在性測(cè)試:如果被測(cè)試的文件存在為真,不存在則為假;

-a | -e

[ -e /backup ]

文件類型測(cè)試(先測(cè)試存在性):

-b FILE:被測(cè)試的文件是否存在并且是否為塊設(shè)備;存在且為塊設(shè)備為真,否則為假;

-c FILE:被測(cè)試的文件是否存在并且是否為字符設(shè)備;

-d FILE:被測(cè)試的文件是否存在并且是否為目錄文件;

-f FILE:被測(cè)試的文件是否存在并且是否為普通文件;

-h|-L FILE:被測(cè)試的文件是否存在并且是否為符號(hào)鏈接文件;

-p FILE:被測(cè)試的文件是否存在并且是否為管道文件;

-S FILE:被測(cè)試的文件是否存在并且是否為套接字文件;

文件的訪問(wèn)權(quán)限測(cè)試:

-r FILE:被測(cè)試的文件是否存在并且當(dāng)前有效用戶是否可讀;文件存在并且當(dāng)前有效用戶可讀為真,否則為假;

-w FILE:被測(cè)試的文件是否存在并且當(dāng)前有效用戶是否可寫;

-x FILE:被測(cè)試的文件是否存在并且當(dāng)前有效用戶是否可執(zhí)行;

文件的特殊權(quán)限標(biāo)識(shí)測(cè)試:

-u FILE:被測(cè)試的文件是否存在并且是否設(shè)置了SUID權(quán)限;文件存在并且設(shè)置了SUID權(quán)限為真,否則為假;

-g FILE:被測(cè)試的文件是否存在并且是否設(shè)置了SGID權(quán)限;

-k FILE:被測(cè)試的文件是否存在并且是否設(shè)置了STICKY權(quán)限;

文件的所有權(quán)測(cè)試:

-O FILE:被測(cè)試的文件是否存在并且其屬主是否為當(dāng)前有效用戶;

-G FILE:被測(cè)試的文件是否存在并且其屬組是否為當(dāng)前有效用戶的組;

文件內(nèi)容是否為空:

-s FILE:被測(cè)試的文件是否存在且內(nèi)容不為空,存在且內(nèi)容不空為真,否則為假;

時(shí)間戳測(cè)試:

-N FILE:被測(cè)試的文件自從上一次被修改之后,是否被修改過(guò);

雙目測(cè)試:

FILE1 -ef FILE2:測(cè)試兩個(gè)文件是否指向同一個(gè)文件系統(tǒng)的相同inode的硬鏈接;

FILE1 -nt FILE2;被測(cè)試的兩個(gè)文件,F(xiàn)ILE1是否比FILE2更新;

FILE1 -ot FILE2:被測(cè)試的兩個(gè)文件,F(xiàn)ILE1是否比FILE2更舊;

測(cè)試語(yǔ)句中可以添加邏輯運(yùn)算:

第一種表達(dá)方式:

[ -O /tmp/test ] && [ -s /tmp/test ]

[ -O /tmp/test ] || [ -s /tmp/test ]

! [ -O /tmp/test ]

第二中表達(dá)方式:

[ -O /tmp/test -a -s /tmp/test ]

[ -O /tmp/test -o -s /tmp/test ]

[ ! -O /tmp/test ]

命令的執(zhí)行結(jié)果:

正常的輸出結(jié)果

命令的執(zhí)行狀態(tài)返回值:

0-255

0:表示命令執(zhí)行成功

1,2,127:系統(tǒng)保留的;

3-126,128-255:用戶自定義的執(zhí)行狀態(tài)返回值;

exit [#]

退出當(dāng)前shell的登錄。

當(dāng)shell腳本運(yùn)行時(shí),一旦遇到exit命令,將立即結(jié)束當(dāng)前shell進(jìn)程,同時(shí)腳本的運(yùn)行也將被停止,即exit后面的所有命令都不再被解釋執(zhí)行;

博客:grep、egrep及相應(yīng)的正則表達(dá)式和用法;講明白每一個(gè)元字符的意義,并舉例說(shuō)明;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享標(biāo)題:bash算數(shù)運(yùn)算和條件測(cè)試語(yǔ)句-創(chuàng)新互聯(lián)
新聞來(lái)源:http://bm7419.com/article28/dgosjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站排名、軟件開(kāi)發(fā)用戶體驗(yàn)、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司