日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【转载】Linux Shell-条件测试

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

測試

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

測試結構

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

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

test??expression

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

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

[ expression ]

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

整數比較運算符

格式:

test?num1?整數比較運算符?num2

或者

[num1?整數比較運算符?num2]

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

????????????????????????????整數比較運算符

整數比較運算符???????????????????????????????????????描述

num1 –eq???????num2??????????????????如果num1等于?num2,測試結果為0

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

num1 –gt num2????????????????????如果num1大于?num2,測試結果為0

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

num1 –lt??num2??????????????????如果num1小于?num2,測試結果為0

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

例子:

#num1=13

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

#echo $?

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

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

字符串運算符

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

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

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

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

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

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

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

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

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

test string

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

例子:

#str1=””

#test “$str1”

#echo $?

1?????????????????????????????????????????????????????????????????????????????????#退出狀態為1,說明字符串為空

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

Linux Shell中,字符串賦值和整數賦值沒有區別,有時候會出現些許問題

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

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

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

#echo $?

1

#[ “$var” –eq??”7” ]????????????#測試變量為var的值是否等于整數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是否是進程可執行文件

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

例子:

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

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

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

邏輯運算符

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

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

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

!expression??????????????????????????如果expression為假,則測試結果為真

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

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

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

例:expr1 –a expr2 –a expr3

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

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

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

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



轉載于:https://blog.51cto.com/26610406/1629519

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。