两个字符串,要比较忽略大小写后是否相等的问题,可以有很多种方法。
方法一: 借助tr命令来处理
#!/bin/bash
name1="tom"
name2="tom"
temp1=$(echo $name1 | tr [a-z] [a-z]) # 将name1全部转变成大写再做比较
temp2=$(echo $name2 | tr [a-z] [a-z]) # 将name2全部转变成大写再做比较
if [ x"$temp1" = x"$temp2" ];then # x$"temp1"前面加x防止其中为空
echo "ok"
else
echo "no"
fi
方法二: 借助grep命令来处理
#!/bin/bash
name="tom"
if echo "$name" | grep -qwi "tom"
then
echo "ok"
else
echo "no"
fi
备注:
- -q # 静默的方式,即不会产生输出,成功则$?返回0,刚好走if的条件分支,非常巧妙!
- -i # 匹配字符串,但忽略大小写
- -w # 按照单词进行匹配
方法三: 借助shopt命令来处理
ss
#!/bin/bash
name1="tom"
name2="tom"
shopt -s nocasematch # 打开bash的开关,忽略大小写
case "$name1" in
$name2) echo "match" ;;
*) echo "no" ;;
esac