我需要比较两个字符串并忽略内容的大小写。如果 [ $first != $second ]。我可以向此命令添加任何内容,以便比较忽略大小写。
答案1
在 bash 中,你可以轻松地执行大小写转换,例如 if var="vAlUe"
then
$ echo "${var^^}"
VALUE
尽管
$ echo "${var,,}"
value
您可以使用此功能通过将两个参数转换为相同的大小写来使比较不区分大小写,即
if [ "${first,,}" == "${second,,}" ]; then
echo "equal"
fi
或者
if [ "${first^^}" == "${second^^}" ]; then
echo "equal"
fi
另一种方法是使用 bashnocasematch
选项(感谢@Tshilidzi_Mudau),尽管这似乎只适用于[[ ... ]]
扩展测试运算符:
$ first=abc; second=ABC
$ (shopt -s nocasematch; if [[ "$first" == "$second" ]]; then echo "Match"; else echo "No match"; fi)
Match
但
$ (shopt -s nocasematch; if [ "$first" == "$second" ]; then echo "Match"; else echo "No match"; fi)
No match
~$