shell比較大小


一、整數比較

-eq 等於,如:if [ "$a" -eq "$b" ] 

-ne 不等於,如:if [ "$a" -ne "$b" ] 

-gt 大於,如:if [ "$a" -gt "$b" ] 

-ge 大於等於,如:if [ "$a" -ge "$b" ] 

-lt 小於,如:if [ "$a" -lt "$b" ] 

-le 小於等於,如:if [ "$a" -le "$b" ] 

大於(需要雙括號),如:(("$a" > "$b")) 

>= 大於等於(需要雙括號),如:(("$a" >= "$b")) 

小數據比較可使用AWK 

 

二、字符串

字符串的比較總結一下:

1.  判斷字符串是否相等,一般我們 [] 用 = ,[[ ]]用 ==, 這樣理解統一

2. 判斷字符串大小時 只能用[]

 

 

#判斷字符串是否相等

if [ "$A" = "$B" ];then

echo "[ = ]"

fi

 

#判斷字符串是否相等,與上面的=等價, 可以使用,但是個人不建議用, 一般我們 [] 用 = ,[[ ]]用 ==, 這樣理解統一, 

if [ "$A" == "$B" ];then

echo "[ == ]"

fi

 

#判斷字符串是否相等,與上面的=等價

if [[ "$A" == "$B" ] ];then

echo "[ == ]"

fi

 

#注意:==的功能在[[]]和[]中的行為是不同的,如下

 

#如果$a以”a”開頭(模式匹配)那么將為true 

if [[ "$A" == a* ]];then

echo "[[ ==a* ]]"

fi

 

#如果$a等於a*(字符匹配),那么結果為true

if [[ "$A" == "a*" ]];then

echo "==/"a*/""

fi

 

 

#File globbing(通配) 和word splitting將會發生, 此時的a*會自動匹配到對應的當前以a開頭的文件

#如在當前的目錄中有個文件:add_crontab.sh,則下面會輸出ok

#if [ "add_crontab.sh" == a* ];then 

#echo "ok"

#fi

if [ "$A" == a* ];then

echo "[ ==a* ]"

fi

如果改成 

if [ "$A" = a* ];then

echo "==/"a*/""

fi

就是模糊匹配了

 

#如果$a等於a*(字符匹配),那么結果為true

if [ "$A" == "a*" ];then

echo "==/"a*/""

fi

 

#字符串不相等

if [ "$A" != "$B" ];then

echo "[ != ]"

fi

 

#字符串不相等

if [[ "$A" != "$B" ]];then

echo "[[ != ]]"

fi

 

#字符串不為空,長度不為0

if [ -n "$A" ];then

echo "[ -n ]"

fi

 

#字符串為空.就是長度為0.

if [ -z "$A" ];then

echo "[ -z ]"

fi

 

字符串 > < 比較時 只能用[ ] ,不能用[[ ]]

#需要轉義<,否則認為是一個重定向符號

if [ $A \< $B ];then

echo "[ < ]"  

fi

 

if [[ $A < $B ]];then

echo "[[ < ]]"  

fi

 

#需要轉義>,否則認為是一個重定向符號

if [ $A \> $B ];then

echo "[ > ]"  

fi

 

if [[ $A > $B ]];then

echo "[[ > ]]"  

fi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM