この質問に対する有用な解決策はたくさんありますが、どれが最速で、リソースの使用量が最も少ないのでしょうか?
このフレームを使用した繰り返しテスト:
/usr/bin/time bash -c 'a=two;b=onetwothree; x=100000; while [ $x -gt 0 ]; do TEST ; x=$(($x-1)); done'
毎回 TEST を置き換える:
[[ $b =~ $a ]] 2.92 user 0.06 system 0:02.99 elapsed 99% CPU
[ "${b/$a//}" = "$b" ] 3.16 user 0.07 system 0:03.25 elapsed 99% CPU
[[ $b == *$a* ]] 1.85 user 0.04 system 0:01.90 elapsed 99% CPU
case $b in *$a):;;esac 1.80 user 0.02 system 0:01.83 elapsed 99% CPU
doContain $a $b 4.27 user 0.11 system 0:04.41 elapsed 99%CPU
(doContain は F. Houri の回答にありました)
そして笑いのために:
echo $b|grep -q $a 12.68 user 30.86 system 3:42.40 elapsed 19% CPU !ouch!
したがって、単純な置換オプションは、拡張テストであろうとケースであろうと、予想どおりに勝ちます。ケースは携帯用です。
100000 grep にパイプアウトするのは、予想通り苦痛です! 必要のない外部ユーティリティの使用に関する古いルールが当てはまります。