コードがあります
file="JetConst_reco_allconst_4j2t.png"
if [[ $file == *_gen_* ]];
then
echo "True"
else
echo "False"
fi
file
「gen」が含まれているかどうかをテストします。出力は「偽」です。いいね!
問題は、「gen」を変数に置き換えるときですtestseq
。
file="JetConst_reco_allconst_4j2t.png"
testseq="gen"
if [[ $file == *_$testseq_* ]];
then
echo "True"
else
echo "False"
fi
これで出力は「True」です。どうやって?この問題をどのように解決しますか?
ベストアンサー1
演算子を使用した正規表現の比較=~
:
#!/bin/bash
file="JetConst_reco_allconst_4j2t.png"
testseq="gen"
if [[ $file =~ $testseq ]];
then
echo "True"
else
echo "False"
fi
このようにしてコンテンツがあるかどうかを比較します$file
。$testseq
user@host:~$ ./string.sh
False
私が変更した場合testseq="Const"
:
user@host:~$ ./string.sh
True
しかし、食べることに注意してください$testseq
。その文字列が何らかの方法で(たとえば)正規表現を表す場合、[0-9]
「一致」がトリガーされる可能性が高くなります。
引用する: