単語に特定の文字が含まれている場合、trueを返すにはif文が必要です。たとえば、
var="information"
if [ $var contain "i" ]; then
....
else
...
fi
ベストアンサー1
switch
またはcase
これに似たものを使うのはどうですか?
#!/bin/sh
v="information"
case $v in
*f*)
echo "found \"f\" in ${v}";;
*)
echo "no match found in ${v}"
esac
exit
針が変数に保存されている場合は、パターンと見なされないように引用することが重要です。
case $haystack in
*"$needle"*) echo match
esac
それがなければ、例えばどんな$needle
場合*
でも?
一致します。大きな干し草の山(それぞれ空でない干し草の山)
とにかく、必ずしも$needle
単一文字である必要はありません。どの文字列でも機能します。
多くのシェルでは、空でないバイトシーケンスでも機能します。有効な文字を形成しなくても、すべてのバイトが文字に分割されるわけではありません。たとえば、é
一部の実装では、UTF-8(0xc3 0xa9)でエンコードされた文字列に0xc3バイトを見つけることができません。逆に、ロケールのエンコーディングi
が0x3 0x69(ASCIIなどの0x69)エンコーディングを持つBIG5-HKSCSの場合、一部のシェルが内部的に見つかる可能性があります。ξ
ξ
i