#!/bin/sh #測試各類字符串比較操做。 #shell中對變量的值添加單引號,爽引號和不添加的區別:對類型來講是無關的,即不是添加了引號就變成了字符串類型, #單引號不對相關量進行替換,如不對$符號解釋成變量引用,從而用對應變量的值替代,雙引號則會進行替代 #author:tenfyguo A="$1" B="$2" echo "輸入的原始值:A=$A,B=$B" #判斷字符串是否相等 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 #若是$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