[シェル]文字列に含まれるかどうかを判断する方法

下部の説明を必ずお読みください

 方法1?

strA="long string"
strB="string"
result=$(echo $strA | grep "${strB}")
if [[ "$result" != "" ]]
then
    echo "包含"
else
    echo "不包含"
fi

方法2? 

strA="helloworld"
strB="low"
if [[ $strA =~ $strB ]]
then
    echo "包含"
else
    echo "不包含"
fi

方法3? 

A="helloworld"
B="low"
if [[ $A==*$B* ]]
then
    echo "包含"
else
    echo "不包含"
fi

方法4? 

thisString="1 2 3 4 5" # 源字符串
searchString="1 2" # 搜索字符串
case $thisString in
    *"$searchString"*) echo "包含" ;;
    *) echo "不包含" ;;
esac

方法5? 

STRING_A=$1
STRING_B=$2
if [[ ${STRING_A/${STRING_B}//} == $STRING_A ]];then
    ## is not substring.
    echo "包含"
    exit 0
else
    ## is substring.
    echo "不包含"
    exit 1
fi

 

 

説明!

シェルスクリプトについてはあまり詳しく調べていません。実際の開発では、プロセス全体をスムーズに操作したい場合は条件付き判定を使用しますが、上記の方法を多く検索するために百度に行くことはしません。

背後にある方法を見ますか?とった!

いくつかの方法で落とし穴があります!

方法2      [[=〜]]

方法3      [[== **]]

これらの2つの実際のテストは、thenが確立されたコードブロックでのみ実行されます。以下の写真は、自分でテストできます。

================================================== =========================

================================================== =========================

利用可能な方法

方法1、grep

注意すべきことがいくつかあります

if [[  "$ result"!= "" ]]

!=左側と右側に   スペース必要です

[[右側にスペースが必要です
]]左側にスペースが必要です

方法4、ケースイン 

inの後の各オプションは、ワイルドカード*で始まり、角かっこで終わります)

各オプションの下のコードブロックは、二重のセミコロンで終わります;;

最後の選択の後にesacで終了します

 

 

おすすめ

転載: blog.csdn.net/qq_44065303/article/details/112539728