shell 條件測試和條件語句

2021-10-01 04:43:17 字數 3424 閱讀 4592

test命令測試特定的表示式是否成立,當條件成立時,測試語句的返回值為0,否則為其他數值

常用的測試操作符

-d:測試是否為目錄(directory)

-f:測試是否為檔案(file)

-e:測試目錄或者檔案是否存在(exist)

-r:測試當前使用者是否由許可權讀取(read)

-w:測試當前使用者是否由許可權寫入(write)

-x:測試當前使用者是否有許可權執行(excute)

檔案測試的兩種書寫方式:test 操作符 檔案或目錄 ;[  操作符    檔案或目錄  ]

例項如下所示

[root@localhost ~]# test -d /etc

[root@localhost ~]# echo $?

0 上個命令的結果為0即為正確,非0是錯誤 /etc/是普通目錄

[root@localhost ~]#

[root@localhost ~]# test -f /opt/

[root@localhost ~]# echo $?

1[root@localhost ~]# ls

[root@localhost ~]# test -f a.sh

[root@localhost ~]# echo $?

0[root@localhost ~]#

[root@localhost ~]# test -e abc

[root@localhost ~]# echo $?

1[root@localhost ~]# test -e /opt/

[root@localhost ~]# echo $?

0[root@localhost ~]#

[root@localhost ~]#  [ -e a.sh ] && echo "yes"   a.sh是存在的檔案,所有判斷為真,輸出yes

yes[root@localhost ~]# [ -d a.sh ] && echo "yes" || echo "no"

no a.sh是普通檔案,判斷不成立,輸出no

[root@localhost ~]# [ ! -d a.sh ] && echo "yes" || echo "no"

yes a.sh是普通檔案,判斷不成立,但因為有!條件取反,也就是條件成立,輸出yes

[root@localhost ~]#

常用的測試操作符

-eq:等於(equal)

-ne:不等於(not equal)

-gt:大於(greater than)

-lt:小於(lesser or equal)

-le:小於或等於(lesser or equal)

-ge:大於或等於(greater or equal)

整數值之間的比較:[  整數1 操作符  整數2 ],示例如下

[root@localhost ~]# a=10

[root@localhost ~]# b=20

[root@localhost ~]# [ $a -eq $b] && echo yes || echo no

bash: [: 缺少 `]' 判斷時,中括號前後都要有空格

no[root@localhost ~]# [ $a -eq $b ] && echo yes || echo no

no[root@localhost ~]# [ $a -lt $b ] && echo yes || echo no

yes[root@localhost ~]# [ $a -gt $b ] && echo yes || echo no

no[root@localhost ~]# [ $a -ne $b ] && echo yes || echo no

yes[root@localhost ~]#

[root@localhost ~]# echo $lang

lang檢視字元使用模式zh_cn.utf-8

[root@localhost ~]# [ $lang = zh_cn.utf-8 ] && echo "字元正確"

字元正確

[root@localhost ~]# [ $lang != zh_cn.utf-8 ] && echo "字元正確"

[root@localhost ~]#

[root@localhost ~]# i=1

[root@localhost ~]# let i=i++

[root@localhost ~]# echo $i

1[root@localhost ~]# i=1

[root@localhost ~]# let i=++i

[root@localhost ~]# echo $i

2[root@localhost ~]#

i=i++,是先賦值,再計算

i=++i,是先計算,再賦值

[root@localhost opt]# [ -d /etc ] && [ -r /etc ] && echo "you can open it"

you can open it

[root@localhost opt]# [ -d /etc ] || [ -d /opt ] && echo "ok"

ok[root@localhost opt]#

單分支結構

if 條件測試操作

then

命令序列

fi

雙分支結構

if  條件測試操作

then

命令序列1

else

命令序列2

fi

多分支結構

if 條件測試操作1

then

命令序列1

elif 條件測試操作2

then

命令序列2

elif 條件測試操作3

then

命令序列3

else

命令序列4

fi

多分支巢狀結構

if 條件測試操作1

then

命令序列1

elif 條件測試操作2

then

命令序列2

elif 條件測試操作3

then

命令序列3

else

if 條件測試操作4

then

命令序列4

else

命令序列5

fifi

shell條件測試語句

eq 等於 ne 不等於 gt 大於 lt 小於 ge 大於或等於 le大於或小於 字串1 字串2 字串內容相同 字串1 字串2 字串內容相不同 字串1 字串2 字串內容為空 邏輯關係 與 和 而且 必須所有條件都滿足 邏輯關係 或 滿足條件之一即可 邏輯關係 非 否 e 判斷目錄或檔案是否存在 f...

Shell指令碼的條件測試和if條件語句使用方法

一 條件測試操作 要使shell指令碼程式具備一定的 智慧型 面臨的第乙個問題就是如何區分不同的情況以確定執行何種操作。shell環境根據命令執行後的返回狀態值 來判斷是否執行成功,當返回值為0時表示成功,否則 非0值 表示失敗或異常。使用專門的測試工具 test命令,可以對特定條件進行測試,並根據...

shell 條件測試語句 test

shell環境根據命令執行後的返回狀態值 來判斷是否執行成功,當返回值為0時表示成功,否則 非0值 表示失敗或異常。使用專門的測試工具test命令,可對條件進行測試,並根據返回值來判斷條件是否成立 返回值為0表示成立 使用test測試命令時 這兩種方式作用完全相同,但是通常使用後者。根據要測試的條件...