入力パラメータに特定の部分文字列が含まれているかどうかを検出したいと思います。
次のスクリプトを試しました。
#1:
#!/bin/sh
if [ $1 = *abc* ]
then
echo contains abc
else
echo not contains abc
fi
#2:
if [ "$1" = "*abc*" ]
then
echo contains abc
else
echo not contains abc
fi
#サム:
if [ "$1" = *"abc"* ]
then
echo contains abc
else
echo not contains abc
fi
#1〜#3はすべて機能しません。
ただし、以下は[[
簡単に機能できます。
#4:
if [[ $1 = *"abc"* ]]
then
echo contains abc
else
echo not contains abc
fi
#5:
if [[ $1 = *abc* ]]
then
echo contains abc
else
echo not contains abc
fi
では、シングルも製作可能でしょうか[
?
1 - 2021年9月21日午前10時55分追加
私は非常に便利なスレッドを見つけました。
ベストアンサー1
[[
はい内蔵シェル。これは[
実行可能ファイルであるより一般的なバージョンです/usr/bin
(参照:ドキュメントとman
ページtest
詳細は)。
[
携帯性に優れ、汎用性の高いもの[[
が一般的に使用しなければならないバリエーションです。
if [[ $1 == *"abc"* ]]; then
echo "substring present"
else
echo "substring not present"
fi
部分文字列をテストするもう一つの良い方法は、正規表現演算子を使用することです。
if [[ "$1" =~ .*"abc".* ]]; then
echo "contains"
else
echo "doesn't contain"
fi
次の式=~
は正規表現ワイルドカードだけではありません。
部分文字列を確認するもう1つの方法は、次を使用することですcase
。
case $1 in
*"abs"*)
echo "substring present"
;;
*)
echo "substring not present"
;;
esac
grep
または、CPHが彼の投稿で説明されているように使用できます。しかし、必ず使用してください。ここ - ドキュメント:
if grep -q "abc" <<< "$STR"; then
echo "substring present"
else
echo "substring not present"
fi