中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

bash算數運算和條件測試語句

發布時間:2020-06-01 12:09:41 來源:網絡 閱讀:423 作者:運維小弟qaq 欄目:網絡安全

一、利用bash腳本編程實現算術運算:

  1)

     +、-:加運算

*、/

%:模運算,取余數

**|^


  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

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

  3)特殊的增強型算術運算:

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

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


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

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


算術運算方法:

1.let VAR=算術表達式

將算術表達式先行進行算術運算,并將運算得到的結果保存到變量VAR中;

2.VAR=$[算術表達式]

算術表達式中如果有變量引用,可以使用$引用,也可以省略$;

SUM=$[C+B]相當于SUM=$[$C+$B]

3.VAR=$((算術表達式))

算術表達式中如果有變量引用,可以使用$引用,也可以省略$;

4.expr ARGU1 ARGU2 ARGU3

ARGU1和ARGU3必須是數值;

ARGU2必須是運算符號

5.echo “算是表達式” | bc


注意:*號,在某些情況下,需要轉義;

變量:存儲數據的容器

弱變量:弱類型變量,字符型(默認),數值型(不包括浮點型)


二、條件測試命令:

test EXPRESSION

shell內建命令;


[ EXPRESSION ]

外部命令[ ;


` EXPRESSION `

bash的內部關鍵字;


   /////注意:這類命令一般沒有執行結果,只有執行狀態返回值;test一般有兩種格式,使用方括號時,要注意在條件兩邊加上空格:

test測試命令有三類測試表達式:

1.數值測試:雙目操作符

-eq :被測試的兩個數值是否相等,相等為真,不等為假;

-ne :被測試的兩個數值是否不相等,不等為真,相等為假;

-gt :被測試的兩個數值,左邊的是否大于右邊的,大于為真,不大于為假;

-lt :被測試的兩個數值,左邊的是否小于右邊的,小于為真,不小于為假;

-ge :被測試的兩個數值,左邊的是否大于等于右邊的,大于等于為真,小于為假;

-le :被測試的兩個數值,左邊的是否小于等于右邊的,小于等于為真,大于為假;


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

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

OK


2.字符串測試

1)雙目操作符:

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

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

 > :被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否大于右邊,大于為真,小于為假;

 < :被測試的兩個字符串在ASCII碼表中對應的二進制數值,左邊是否小于右邊,小于為真,大于為假;

注意:>和<必須用在` EXPRESSION `測試語句中;

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


單目操作符:

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

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


注意:

 1.通常情況下,字符串要加引號,單引號或雙引號都行,根據實際情況選擇即可;

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

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


3.文件狀態測試

單目測試:

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

-a | -e

[ -e /backup ]


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

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

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

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

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

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

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

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


文件的訪問權限測試:

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

-w FILE:被測試的文件是否存在并且當前有效用戶是否可寫;

-x FILE:被測試的文件是否存在并且當前有效用戶是否可執行;


文件的特殊權限標識測試:

-u FILE:被測試的文件是否存在并且是否設置了SUID權限;文件存在并且設置了SUID權限為真,否則為假;

-g FILE:被測試的文件是否存在并且是否設置了SGID權限;

-k FILE:被測試的文件是否存在并且是否設置了STICKY權限;


文件的所有權測試:

-O FILE:被測試的文件是否存在并且其屬主是否為當前有效用戶;

-G FILE:被測試的文件是否存在并且其屬組是否為當前有效用戶的組;


文件內容是否為空:

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


時間戳測試:

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


雙目測試:

FILE1 -ef FILE2:測試兩個文件是否指向同一個文件系統的相同inode的硬鏈接;

FILE1 -nt FILE2;被測試的兩個文件,FILE1是否比FILE2更新;

FILE1 -ot FILE2:被測試的兩個文件,FILE1是否比FILE2更舊;


測試語句中可以添加邏輯運算:

第一種表達方式:

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

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

! [ -O /tmp/test ]


第二中表達方式:

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

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

[ ! -O /tmp/test ]


命令的執行結果:

正常的輸出結果


命令的執行狀態返回值:

0-255

0:表示命令執行成功

1,2,127:系統保留的;

3-126,128-255:用戶自定義的執行狀態返回值;


exit [#]

退出當前shell的登錄。


當shell腳本運行時,一旦遇到exit命令,將立即結束當前shell進程,同時腳本的運行也將被停止,即exit后面的所有命令都不再被解釋執行;


博客:grep、egrep及相應的正則表達式和用法;講明白每一個元字符的意義,并舉例說明;





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳普湖县| 东平县| 西吉县| 句容市| 乐山市| 华池县| 射洪县| 舞阳县| 体育| 大埔县| 武乡县| 华池县| 九台市| 都江堰市| 古田县| 大新县| 永济市| 石城县| 宜都市| 大洼县| 荆门市| 沈丘县| 韩城市| 台南市| 阜平县| 手游| 甘谷县| 尼勒克县| 河北区| 遂溪县| 根河市| 伊吾县| 古蔺县| 南京市| 九寨沟县| 祁门县| 于田县| 长武县| 淅川县| 马公市| 庆云县|