歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Ubuntushell條件測試

Ubuntushell條件測試

日期:2017/3/1 13:39:38   编辑:SHELL編程

條件測試

test 測試條件 測試內容

[測試條件 測試內容] #用的更為廣泛

1 測試文件類型

test -e 文件名 測試文件是否存在,存在為真

[ -e 文件名 ] 注意:[]的左右兩側必須加空格!

附:test測試結果並不顯示,需用echo$? 來顯示test的返回值

返回0語句正確,非0表示不正確。

拓展:test -e test.txt && echo Yes || echo No

test -f 文件名 判斷是否是普通文件#如果是文件的話,返回Yes,若是目錄返回非No

test -d 文件名 判斷是否為目錄

test -b 文件名 判斷是否為塊設備文件

test -c 文件名 字符設備文件

2 測試文件權限

test -r 文件名 判斷是否有可讀權限

test -w 文件名 可寫

test -x 文件名 執行

test -s 文件名 判斷是否為非空白,有內容為真

3 兩個文檔比較

[file1 -nt file2 ] file1是否比file2新

[file1 -ot file2 ] file1是否比file2舊

[file1 -ef file2 ] file1與file2是否是鏈接文件,是否是快捷方式,軟鏈接

4 兩個數值之間判斷

[n1 -eq n2 ] n1和n2是否相等#推薦使用下面的 ==符號來判斷

測試:aa=123;bb=123

[$aa -eq $bb ] && echo Yes || echo no

[n1 -ne n2 ] n1和n2是否不等

[n1 -gt n2 ] n1大於n2

[n1 -lt n2 ] n1小於n2

[n1 -ge n2 ] n1大於等於n2

[n1 -le n2 ] n1小於等於n2

5 判斷字符串

[-z 字符串] 判斷字符串是否為空,變量值沒有內容/為空則是真

[字符串1 == 字符串2] 判斷字串1是否與字串2相等#判斷采用的是字符串型

[$aa == $bb ] && echo 1 || echo 2

附:aa=abc

[“$aa” == “abc” ] && echo Yes || echo No #為什麼把兩個“”去掉測試也成功

[字符串1 != 字符串2] 判斷字串是否不等

6 多重判斷

-a 邏輯與

[-z $file -a -e $file ]

-o邏輯或

! 邏輯非

例子7:判斷輸入的文件類型和文件權限注:一定要練習

#!/bin/bash

echo-e "nide wenjian shifou cunzai? wenjian quanxian shi shenme?\n\n"

read-p "please input filename:" -t 30 filename

test-z $filename && echo "please input filename!!" &&exit 1

#判斷字符串是否為空,如果為空,打印錯誤信息,並且退出程序!

test! -e $filename && echo "wenjian bucunzai!" &&exit 2

#-e 變量 判斷文件是否存在,存在為真 ! 邏輯非

test-f $filename && filetype=putong

#-f 是否為普通文件

test-d $filename && filetype=mulu

#-d 是否為目錄

test-r $filename && perm="read"

#-r是否有可讀權限

test-w $filename && perm="$perm write"

#-w 是否可寫

test-x $filename && perm="$perm executable"

#-x 是否可執行

echo-e "the filename is : $filename \n"

#打印文件名

echo-e "filetype is : $filetype \n"

#打印文件類型

echo-e "permision is : $perm \n"

#打印文件權限

多命令順序執行

1)命令1 ; 命令2;命令3 命令123順序執行。之間沒有任何關系如:cd;ls ;date #date 用於打印當前系統時間

2)命令1 && 命令2 命令1正確執行後,命令2才會執行

3)命令1 || 命令2 命令1執行不正確,命令2才會執行,也就是說:如果第一個命令正確執行,那麼第二個命令就不會執行了!

類test測試:

a)ls && echo "Yes" || echo "No"

b)ls skdjfkdj && echo "Yes" || echo "No"

lsaa && echo "cunzai" || echo "bu cunzai!" 執行ls aa,判斷如果正確,輸出“存在”。如果不存在,輸出“不存在”

7 管道符:兩個命令之間有聯系,

命令1 | 命令2 命令1的執行結果,作為命令2的執行條件

注意:第一條命令一定得有輸出

Copyright © Linux教程網 All Rights Reserved