Shell字串比較相等 不相等方法小結

2021-08-28 15:48:46 字數 2113 閱讀 5188

#!/bin/sh

#測試各種字串比較操作。

#shell中對變數的值新增單引號,爽引號和不新增的區別:對型別來說是無關的,即不是新增了引號就變成了字串型別,

#單引號不對相關量進行替換,如不對$符號解釋成變數引用,從而用對應變數的值替代,雙引號則會進行替代

#author:tenfyguo

a="$1"

b="$2"

echo 「輸入的原始值:a=a,b

=a,b=

a,b=

b」#判斷字串是否相等

if [ 「a"=

"a" = "

a"="

b」 ];then

echo 「[ = ]」

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

if [ 「a"=

="

a" == "

a"==

"b」 ];then

echo 「[ == ]」

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

#如果a以」

a」開頭

(模式匹

配)那麼

將為tr

ueif

[[

"a以」a」開頭(模式匹配)那麼將為true if [[ "

a以」a」開

頭(模式

匹配)那

麼將為t

ruei

f[["

a" == a* ]];then

echo 「[[ ==a* ]]」

fi#如果a等於

a∗(字

符匹配)

,那麼結

果為tr

ueif

[[

"a等於a*(字元匹配),那麼結果為true if [[ "

a等於a∗(

字元匹配

),那麼

結果為t

ruei

f[["

a" == 「a*」 ]];then

echo 「==/「a*/」」

fi#file globbing(通配) 和word splitting將會發生, 此時的a會自動匹配到對應的當前以a開頭的檔案

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

#if [ 「add_crontab.sh」 == a ];then

#echo 「ok」

#fiif [ 「$a」 == a* ];then

echo 「[ ==a* ]」

fi#如果a等於

a∗(字

符匹配)

,那麼結

果為tr

ueif

["

a等於a*(字元匹配),那麼結果為true if [ "

a等於a∗(

字元匹配

),那麼

結果為t

ruei

f["a" == 「a*」 ];then

echo 「==/「a*/」」

fi#字串不相等

if [ 「a"!

="

a" != "

a"!=

"b」 ];then

echo 「[ != ]」

fi#字串不相等

if [[ 「a"!

="

a" != "

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 「[ < ]」

fiif [[ $a < $b ]];then

echo 「[[ < ]]」

fi#需要轉義》,否則認為是乙個重定向符號

if [ $a /> $b ];then

echo 「[ > ]」

fiif [[ $a > $b ]];then

echo 「[[ > ]]」

fi

shell字串比較,相等不相等

bin sh 測試各種字串比較操作。shell中對變數的值新增單引號,爽引號和不新增的區別 對型別來說是無關的,即不是新增了引號就變成了字串型別,單引號不對相關量進行替換,如不對 符號解釋成變數引用,從而用對應變數的值替代,雙引號則會進行替代 author tenfyguo a 1 b 2 echo...

物件相等與不相等

看一段 var a function xx var c a var b a console.log c b false c和b是兩個單獨的物件,所以不相等 等同於1 var e 2var f 3 console.info e f 但是這種又是相等的 1 var ee 2var ee1 ee 3var...

EL表示式相等 不相等符號

eq相等 ne neq不相等,gt大於,lt小於 gt大於,lt小於 gte ge大於等於 lte le 小於等於 not非 mod求模 is not div by是否能被某數整除 is not even是否為偶數 is not even by b即 a b 2 0 is not odd是否為奇 i...