Değişken needle
değerindeki değişken değerinin büyük / küçük harf duyarlı bir dize araması için haystack
:
case "$haystack" in
*"$needle"*) echo "present";
*) echo "absent";
esac
Büyük / küçük harf duyarlı bir dize araması için her ikisini de aynı duruma dönüştürün.
uc_needle=$(printf %s "$needle" | tr '[:lower:]' '[:upper:]' ; echo .); uc_needle=${uc_needle%.}
uc_haystack=$(printf %s "$haystack" | tr '[:lower:]' '[:upper:]' ; echo .); uc_haystack=${uc_haystack%.}
case "$uc_haystack" in
*"$uc_needle"*) echo "present";;
*) echo "absent";;
esac
O Not tr
GNU coreutils içerisinde baytlı yerel ayarları desteklemeyen (örneğin UTF-8). Çok baytlı yerel ayarlarla çalışma yapmak için bunun yerine awk kullanın. Awk kullanacaksanız, sadece dönüşüm yerine dize karşılaştırmasını yapabilirsiniz.
if awk 'BEGIN {exit !index(toupper(ARGV[2]), toupper(ARGV[1]))}' "$needle" "$haystack"; then
echo "present"
else
echo "absent"
fi
tr
BusyBox dan desteklemediği sözdizimi; bunun yerine kullanabilirsiniz . BusyBox, ASCII dışı yerel ayarları desteklemiyor.[:CLASS:]
tr a-z A-Z
Bash (ama sh) sürüm 4.0, sürümünde, büyük / küçük harf dönüşümü için yerleşik bir sözdizimi ve dize eşlemesi için daha basit bir sözdizimi vardır.
if [[ "${haystack^^}" = *"${needle^^}"* ]]; then
echo "present"
else
echo "absent"
esac
grep -i
olabilir?