日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【转载】Linux Shell-条件测试

發(fā)布時間:2025/7/14 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】Linux Shell-条件测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

測試

Linux?Shell中存在一組測試命令,該組命令用于測試某種條件或某幾種條件是否真實存在。測試命令是判斷語句和循環(huán)語句中條件測試工具,所以,其對于編寫Shell非常重要。

測試結(jié)構

測試命令用于測試表達式的條件的真假。如果測試的條件為真,則返回一個0值;如果測試條件為假,將返回一個非0整數(shù)值

測試命令有兩種結(jié)構,一種是用test命令進行測試,結(jié)構如下:

test??expression

其中,條件expression是一個表達式,該表達式可為數(shù)字、字符串、文本和文件屬性的比較,同時可同時加入各種算術、字符串、文本等運算符。

為了提高命令的可讀性,經(jīng)常使用第二種格式:

[ expression ]

其中“[”是啟動測試命令,但要求在expression后要有一個“]”與其配對。使用該命令要特別注意“[”后和“]”前的空格必不可少。第二種格式常用。

整數(shù)比較運算符

格式:

test?num1?整數(shù)比較運算符?num2

或者

[num1?整數(shù)比較運算符?num2]

整數(shù)比較運算符不可用于字符串、文件操作,同樣字符串操作也不可用于其他的操作,若誤用,將產(chǎn)生不必要的錯誤。

????????????????????????????整數(shù)比較運算符

整數(shù)比較運算符???????????????????????????????????????描述

num1 –eq???????num2??????????????????如果num1等于?num2,測試結(jié)果為0

num1 –ge num2???????????????????如果num1大于或等于?num2,測試結(jié)果為0

num1 –gt num2????????????????????如果num1大于?num2,測試結(jié)果為0

num1 –le?num2??????????????????如果num1小于或等于?num2,測試結(jié)果為0

num1 –lt??num2??????????????????如果num1小于?num2,測試結(jié)果為0

num1 –ne num2???????????????????如果num1不等于?num2,測試結(jié)果為0

例子:

#num1=13

#[ “$num1” –eq 13 ]?????#測試num1是否等于13

#echo $?

0?????????????????????????????????#退出狀態(tài)為0,表示num1等于13;反之,退出狀態(tài)為非0.

注:整數(shù)比較運算符不適用于浮點型數(shù)值比較。

字符串運算符

該組字符串可以用來測試字符串是否為空、兩個字符串是否相等,常用于測試用戶輸入的是否為空或比較字符串變量

???????????????????????????????????字符串運算符

字符串運算符?????????????????????????????????????????????????描述

string?????????????????????????????????????????測試字符串string是否不為空

-n string?????????????????????????????????????測試字符串string是否不為空

-z string?????????????????????????????????????測試字符串string是否為空

string1=string2????????????????????????????測試字符串string1是否與字符串string2相同

string1!=string2??????????????????????????測試字符串string1是否與字符串string2不相同

對于第一種格式,只是用string進行測試時要特別注意該方式只有一種格式:

test string

不存在另一種格式。字符串比較時建議字符串變量要使用雙引號,即使變量為空,也要使用雙引號。

例子:

#str1=””

#test “$str1”

#echo $?

1?????????????????????????????????????????????????????????????????????????????????#退出狀態(tài)為1,說明字符串為空

注:在給字符串變量賦值時,要注意空格對字符串比較的影響。

Linux Shell中,字符串賦值和整數(shù)賦值沒有區(qū)別,有時候會出現(xiàn)些許問題

以下這個例子要引起注意:

#var=”007”??????????????????????????#給變量賦值,可以當做整數(shù),也可以當做字符串

#[ “var” = ”7” ]????????????????????#測試變量var的值是否等于字符串7

#echo $?

1

#[ “$var” –eq??”7” ]????????????#測試變量為var的值是否等于整數(shù)7

#echo $?

0

文件操作符

格式:

test?文件操作符?file

或者

[?文件操作符?file ]

其中file為文件名、目錄名或者文件路徑等。

?????????????????????文件操作符

文件運算符??????????????描述

-d file????????????????????測試file是否為目錄

-e file????????????????????測試file是否存在

-f file????????????????????測試file是否為普通文件

-r file????????????????????測試file是否是進程可讀文件

-s file????????????????????測試file的長度是否不為0

-w file???????????????????測試file是否是進程可寫文件

-x file????????????????????測試file是否是進程可執(zhí)行文件

-L file????????????????????測試file是否為符號化鏈接

例子:

#[ -e file_exam ]?????#測試file_exam是否存在

注:在以后的Linux Shell編程過程中,都會用到很多這樣的例子,如創(chuàng)建文件后測試文件是否創(chuàng)建成功,刪除文件后判斷文件是否刪除成功。當然,也可以通過查看退出狀態(tài),查看文件是否成功創(chuàng)建或者成功刪除。

Linux Shell編程中還有其他的測試操作符,和上面提到的整數(shù)比較運算符、字符串運算符和文件操作符結(jié)合使用,進而組合成復雜的測試用于判斷或循環(huán)語句中。

邏輯運算符

邏輯運算符用于測試多個條件是否為真或為假,或使用邏輯非測試單個表達式,這些運算符在Shell編程中經(jīng)常用到,這些條件一般和測試命令聯(lián)用

????????????????????????????邏輯操作符

邏輯操作??????????????????????????????????????????描述

!expression??????????????????????????如果expression為假,則測試結(jié)果為真

expression1 –a expression2???如果expression1expression2同時為真,則測試結(jié)果為真

expression1 –o expression2???如果expression1expression2有一個為真,則測試結(jié)果為真

其中expression為表達式,該表達式描述了一個測試條件。在邏輯運算符表達式中并不是所有的運算符都會被執(zhí)行。

例:expr1 –a expr2 –a expr3

只有當expr1為真時,才會測試expr2,依次。邏輯或運算符類似。

例:[ -e file_exam –a –x file_exam ]

???????[ “$integer1” –lt 20 –o “integer1” –gt 30 ]

注:當邏輯非運算符和表達式之間要有空格。



轉(zhuǎn)載于:https://blog.51cto.com/26610406/1629519

總結(jié)

以上是生活随笔為你收集整理的【转载】Linux Shell-条件测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。