Shell中字符串比较忽略大小写的问题

两个字符串,要比较忽略大小写后是否相等的问题,可以有很多种方法。

方法一: 借助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

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值