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

歡迎訪問 生活随笔!

生活随笔

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

linux

linux条件测试的三种,shell编程之条件测试 | 旺旺知识库

發布時間:2023/12/2 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux条件测试的三种,shell编程之条件测试 | 旺旺知识库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、條件測試語法:

test 測試內容

[ 測試內容?] ? ? ?##注意中括號與測試內容間有空格

[[ 測試內容?]]

(( 測試內容?)) ? ##只能用于測試數值大小,后面詳解

前三種測試語法基本等同。

二、數值測試:

2.1 常見的數值測試:

int1 -eq int2 如果int1 等于int2,則返回真

int1 -ne int2 如果int1 不等于int2,則返回真

int1 -lt int2 如果int1 小于int2,則返回真

int1 -gt int2 如果int1 大于int2,則返回真

int1 -le int2 如果int1 小于等于int2,則返回真

int1 -ge int2如果int1 大于等于int2,則返回真

2.2 在(( ?))中測試

< 小于(在雙括號里使用) (("int1" < "int2")) ?等同于?[ int1 -lt?int2?]

[root@server1 ~]# (( "2" < "3" ))

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ 1 -lt 3 ]

[root@server1 ~]# echo $?

0

<= 小于等于 (在雙括號里使用) (("int1" <= "int2")) ? 等同于 [ int1 -ne int2?]

> 大于 (在雙括號里使用) (("int1" > "int2")) ?等同于 [?int1 -gt int2 ]

>= 大于等于(在雙括號里使用) (("int1" >= "int2")) 等同于 [ int1 -ge int2?]

注意:雙括號測試不能測試數值相等的情況,使用雙括號測試等于是會報如下錯誤:

[root@server1 ~]# (( "2" = "3" ))

-bash: ((: 2 = 3 : attempted assignment to non-variable (error token is "= 3 ")

3、測試字符串:

-z string 字符串string 為空串(長度為0)時返回真

-n string 字符串string 為非空串時返回真

str1 = str2 字符串str1 和字符串str2 相等時返回真

str1 == str2 同 =

str1 != str2 字符串str1 和字符串str2 不相等時返回真

str1 < str2 按字典順序排序,字符串str1 在字符串str2 之前,一般不會用到

str1 > str2 按字典順序排序,字符串str1 在字符串str2 之后,一般不會用到

測試示例:

[root@server1 ~]# A=str

[root@server1 ~]# B=str

[root@server1 ~]# [ $A = $B ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# B=Str

[root@server1 ~]# [ $A = $B ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -n $B ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -z $B ]

[root@server1 ~]# echo $?

1

4、文件測試:

-b?FILE存在并且是塊文件時返回真;

-c?FILE存在并且是字符文件時返回真;

-e FILE 文件或目錄存在時返回真;

-f FILE 文件為普通文件時返回真;

-d FILE 指定路徑為目錄時返回真;

-r FILE 當前用戶對指定文件有讀取權限時返回真;

-w FILE 當前用戶對指定的目錄或文件存在并并可寫時返回真;

-x FILE 當前用戶對指定的文件或目錄存在并且可執行時返回真;

-s FILE 指定文件存在并且文件大小大于0時返回真

-O FILE 存在并且屬于當前進程的有效用戶id 的用戶的用戶組時返回真

-G FILE 存在并且屬于當前進程的有效用戶id 的用戶的用戶組時返回真

FILE1 -nt FILE2 當FILE1比FILE2新時返回真

FILE1 -ot FILE2 當FILE1比FILE2舊時返回真

FILE1 -ef FILE2 當FILE1和FILE2硬鏈接到同一個文件時返回真

測試示例:

[root@server1 ~]# [ -d /etc/sysconfig/network ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts ]

[root@server1 ~]# echo $?

0

5、在測試中使用邏輯操作符:

5.1 單[]中的邏輯測試符

-a 邏輯與,操作符兩邊均為真,結果為真,否則為假

-o 邏輯或,操作符兩邊一邊為真,結果為真,否則為假

! 邏輯否,條件為假,結果為真

測試示例:

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -o -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -a -e /etc/fstabs ]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -a -e /etc/fstab ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -d /etc/sysconfig/network-scripts -o -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ ! -e /etc/fstabs ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [ -e /etc/fstabs ]

[root@server1 ~]# echo $?

1

##注意標紅部分不一樣的地方

5.2 雙[[]]中的邏輯測試符:

&& 邏輯與,操作符兩邊均為真,結果為真,否則為假,功能上與 -a 相同

|| ?邏輯或,操作符兩邊一邊為真,結果為真,否則為假,功能上與 -o 相同

測試示例:

[root@server1 ~]# [ -b /dev/sdb -a -e /etc/fstab ]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [[ -b /dev/sdb && -e /etc/fstab ]]

[root@server1 ~]# echo $?

0

[root@server1 ~]# [[ -b /dev/sdb && -e /etc/fstabs ]]

[root@server1 ~]# echo $?

1

[root@server1 ~]# [[ -b /dev/sdb || -e /etc/fstabs ]]

[root@server1 ~]# echo $?

0

另外,測試還支持通配符,如:

[root@server1 ~]# [ -e /etc/in*t ]

[root@server1 ~]# echo $?

0

總結

以上是生活随笔為你收集整理的linux条件测试的三种,shell编程之条件测试 | 旺旺知识库的全部內容,希望文章能夠幫你解決所遇到的問題。

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