Shell中字串比較忽略大小寫的問題
阿新 • • 發佈:2018-11-23
兩個字串,要比較忽略大小寫後是否相等的問題,可以有很多種方法。
方法一: 藉助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