使用test命令進行進行條件測試

2022-04-03 08:48:02 字數 2327 閱讀 4439

使用test命令進行進行條件測試

格式: test conditions

test在以下四種情況下使用:

a. 字元比較

b.兩個整數值的比較

c. 檔案操作,如檔案是否存在及檔案的狀態等

d. 邏輯操作,可以進行and/or,與其他條件聯合使用

a. 測試字元資料: shell變數通常均作為字元變數

str1 = str2     二者相長,相同

str1 != str2    不同

-n string       string不為空(長度不為零)

-z string       string為空

string          string不為空

例:$ str1=abcd     #在含有空格時必須用引號括起來

$ test $str1=abcd

$ echo $?

0                        #無錯

$ str1="abcd "

$ test $str1=abcd

$ echo $?

1                  #有錯,因為str1的字串後面還有個空格,不等於abcd

note: 在test處理含有空格的變數時最好用引號將變數括起來,否則會出現錯誤的

結果,因為shell在處理命令行時將會去掉多餘的空格,而用引號括起來則可以防止

shell去掉這些空格.

例:$ str1="    "

$ test $str1

$ echo $?

1$ test "$str1"

$ echo $?

0$ test -n $str1

test: argument expected

$ test -n "$str1"

$ echo $?0$

b. 整數測試: test與expr相同,可以將字元型變數轉換為整數進行操作,expr進行

整數的算術運算,而test則進行邏輯運算.

表示式                 說明

---------------------------------------

int1 -eq int2          相等?

int1 -ne int2          不等?

int1 -gt int2          int1 > int2 ?

int1 -ge int2          int1 >= int2 ?

int1 -lt int2          int1 < int2 ?

int1 -le int2          int1 <= int2 ?

例:$ int1=1234

$ int2=01234

$ test $int1 -eq $int2

$ echo $?

0c. 檔案測試:檢查檔案狀態如存在及讀寫許可權等

-r filename     使用者對檔案filename有讀許可權?

-w filename     使用者對檔案filename有寫許可權?

-x filename     使用者對檔案filename有可執行許可權?

-f filename     檔案filename為普通檔案?

-d filename     檔案filename為目錄?

-c filename     檔案filename為字元裝置檔案?

-b filename     檔案filename為塊裝置檔案?

-s filename     檔案filename大小不為零?

-t fnumb        與檔案描述符fnumb(預設值為1)相關的裝置是乙個終端裝置?

d. 測試條件之否定,使用!

例:$ cat /dev/null > empty

$ test -r empty

$ echo $?

0$ test -s empty

1$ test ! -s empty

$ echo $?

0e. 測試條件之邏輯運算

-a      and

-o      or

例: $ test -r empty -a -s empty

$ echo $?

1f. 進行test測試的標準方法

因為test命令在 shell程式設計中占有很重要的地位,為了使shell能同其他程式語言

一樣便於閱讀和組織, bourne shell在使用test測試時使用了另一種方法:用方括號將

整個test測試括起來:

$ int1=4

$ [ $int1 -gt 2 ]

$ echo $?

0

使用 bc 進行進製轉換

使用 bc 進行進製轉換 在 shell 中進行進製轉換的另乙個訣竅是使用bc,它是一種任意精度運算語言,大多數 unix linux 安裝程式都提供。因為它允許您指定輸出進製,所以當您需要以十進位制以外的進製輸出時,這是一種很好的技術。bc的特殊變數ibase和obase分別包含用於輸入和輸出的進...

使用命令列進行截圖!!!

今天我想進行截圖這樣偉大而又稀鬆的任務的時候發現了,我使用不了滑動截圖,坑啊 我開始在網上怒找截圖工具,但是未果。但是找到了,命令列截圖這麼牛掰的方法,我使用了一下,還是可以的,不錯啊,有可以在小夥伴面前裝x了 但是在這裡還是要總結一下比較好,主要介紹兩種截圖命令,工作環境 ubuntu 12 04...

使用apache的ab命令進行壓測

環境盡量和線上保持一致 ngixn版本,php版本,網路大小,在測試高併發的時候要修改測試機的最大訪問量ulimit n,ab是單執行緒程式,只能利用單一cpu,在給效能好的伺服器端應用做壓測時,往往跑ab的測試機負荷滿了 而伺服器應用的效能還綽綽有餘。yum y install httpd too...