Shell中的test命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值摘仅、字符和文件三個(gè)方面的測(cè)試。
數(shù)值測(cè)試
-eq 等于則為真 # eq: equal
-ne 不等于則為真 # ne: not equal
-gt 大于則為真 # gt: greater than
-ge 大于等于則為真 # ge: greater equal
-lt 小于則為真 # lt: less than
-le 小于等于則為真 # le: less equal
eg:
#!/bin/bash
num1=100
num2=100
result=$((num1+num2))
echo "result:${result}"
字符串測(cè)試
= 等于則為真
!= 不相等則為真
-z 字符串 字符串的長(zhǎng)度為零則為真
-n 字符串 字符串的長(zhǎng)度不為零則為真
eg:
#!/bin/bash
str1="str1"
str2="str2"
str3=""
if test -z $str3
then
echo "長(zhǎng)度為0" # 打印
else
echo "長(zhǎng)度不為0"
fi
if test $str1 = $str2
then
echo "字符串相等"
else
echo "字符串不相等" # 打印
fi
文件測(cè)試
-e 文件名 如果文件存在則為真 # e: exists
-r 文件名 如果文件存在且可讀則為真 # r: read
-w 文件名 如果文件存在且可寫則為真 # w: write
-x 文件名 如果文件存在且可執(zhí)行則為真 # x: execute
-s 文件名 如果文件存在且至少有一個(gè)字符則為真 #
-d 文件名 如果文件存在且為目錄則為真 # directory
-f 文件名 如果文件存在且為普通文件則為真 # file
-c 文件名 如果文件存在且為字符型特殊文件則為真 #
-b 文件名 如果文件存在且為塊特殊文件則為真 # block
eg:
cd /bin
if test -e ./bash # 注意:這里也可以寫為: bash, 不寫./也可以
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
另外,Shell還提供了與( -a )鸯乃、或( -o )、非( ! )三個(gè)邏輯操作符用于將測(cè)試條件連接起來跋涣,其優(yōu)先級(jí)為:"!"最高缨睡,"-a"次之,"-o"最低:
cd /bin
if test -e ./notFile -o -e ./bash
then
echo '有一個(gè)文件存在!'
else
echo '兩個(gè)文件都不存在'
fi
注意:
上面的例子可以看出陈辱,我們是cd
到了/bin
目錄之后奖年,才test
的。