版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/SunnyYoona/article/details/73330973
Shell中的 test 指令用于檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB17db121f19641ccdd5db6d4b88f44af2%3Fmethod%3Ddownload%26read%3Dtrue#1-%E6%95%B0%E5%80%BC 1. 數值
參數 | 說明 |
---|---|
-eq | 等于則為真 |
-ne | 不等于則為真 |
-gt | 大于則為真 |
-ge | 大于等于則為真 |
-lt | 小于則為真 |
-le | 小于等于則為真 |
Example:
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '兩個數相等'
else
echo '兩個數不相等'
fi
# 兩個數相等
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB17db121f19641ccdd5db6d4b88f44af2%3Fmethod%3Ddownload%26read%3Dtrue#2-%E5%AD%97%E7%AC%A6%E4%B8%B2 2. 字元串
= | |
!= | 不相等則為真 |
-z 字元串 | 字元串的長度為零則為真 |
-n 字元串 | 字元串的長度不為零則為真 |
str1="2016-11-21"
str2="2016-11-22"
if test ${str1} = ${str2}
then
echo '兩個日期相同'
else
echo '兩個日期不相同'
fi
# 兩個日期不相同
備注
如果上面的使用方法中,字元串中有空格,則會報錯:
str1="2016-11-22 12:34:21"
str2="2016-11-22 12:34:21"
if test ${str1} = ${str2}
then
echo '兩個日期相同'
else
echo '兩個日期不相同'
fi
輸出:
兩個日期不相同
/home/xiaosi/code/openDiary/BaseOperation/src/main/sh/sh_test.sh: 第 6 行: test: 參數太多
解決方案:
str1="2016-11-22 12:34:21"
str2="2016-11-22 12:34:21"
if test "${str1}" = "${str2}"
then
echo '兩個日期相同'
else
echo '兩個日期不相同'
fi
兩個日期相同
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB17db121f19641ccdd5db6d4b88f44af2%3Fmethod%3Ddownload%26read%3Dtrue#3-%E6%96%87%E4%BB%B6 3. 檔案
-e 檔案名 | 如果檔案存在則為真 |
-r 檔案名 | 如果檔案存在且可讀則為真 |
-w 檔案名 | 如果檔案存在且可寫則為真 |
-x 檔案名 | 如果檔案存在且可執行則為真 |
-s 檔案名 | 如果檔案存在且至少有一個字元則為真 |
-d 檔案名 | 如果檔案存在且為目錄則為真 |
-f 檔案名 | 如果檔案存在且為普通檔案則為真 |
-c 檔案名 | 如果檔案存在且為字元型特殊檔案則為真 |
-b 檔案名 | 如果檔案存在且為塊特殊檔案則為真 |
if test -e /home/xiaosi/error.txt
then
echo '檔案存在'
else
echo '檔案不存在'
fi
# 檔案存在
if test -r /home/xiaosi/error.txt
then
echo '檔案可讀'
else
echo '檔案不可讀'
fi
# 檔案可讀
if test -s /home/xiaosi/error.txt
then
echo '檔案不為空'
else
echo '檔案為空'
fi
# 檔案為空
if test -d /home/xiaosi
then
echo '檔案為目錄'
else
echo '檔案不為目錄'
fi
# 檔案為目錄
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB17db121f19641ccdd5db6d4b88f44af2%3Fmethod%3Ddownload%26read%3Dtrue#4-%E9%80%BB%E8%BE%91%E6%93%8D%E4%BD%9C 4. 邏輯操作
Shell還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用于将測試條件連接配接起來,其優先級為:"!"最高,"-a"次之,"-o"最低。
str="2016-11-21"
if test "${str}" = "2016-11-21" -a -s /home/xiaosi/error.txt
then
echo '日期正确 并且 檔案不為空'
else
echo '日期錯誤 或者 檔案為空'
fi
# 日期錯誤 或者 檔案為空