stringshellcomparecase-insensitive

Case insensitive comparison of strings in shell script


The == operator is used to compare two strings in shell script. However, I want to compare two strings ignoring case, how can it be done? Is there any standard command for this?


Solution

  • if you have bash

    str1="MATCH"
    str2="match"
    shopt -s nocasematch
    case "$str1" in
     $str2 ) echo "match";;
     *) echo "no match";;
    esac
    

    otherwise, you should tell us what shell you are using.

    alternative, using awk

    str1="MATCH"
    str2="match"
    awk -vs1="$str1" -vs2="$str2" 'BEGIN {
      if ( tolower(s1) == tolower(s2) ){
        print "match"
      }
    }'