Question

I want to check the following condition, but it should be case insensitive. if [ "SPP" == $1 ] Is there anyway I can do it using regex.

Était-ce utile?

La solution 3

You can use:

shopt -s nocasematch

For case insensitive matching in BASH.

Alternatively this should also work:

[[ "$1" == [sS][pP][pP] ]]

Autres conseils

You can also do the following:

#!/bin/bash
myParam=`echo "$1" | tr 'a-z' 'A-Z'`
if [ "SPP" == "$myParam" ]; then
    echo "Is the same"
else
    echo "It is not the same"
fi

This script will automatically converts user input to uppercase before making any string comparison. By doing so, you will not have to use regex for case insensitive string comparison.

Hope it helps.

Better late than never...

If that's ksh93, use the ~(i:...) case-insensitive globbing sub-pattern:

if [[ $1 == *~(i:spp)* ]]; then
  : matched.
fi

For ksh88 (also the ksh clones), use an intermediary variable typeset -u'd to force upper-case:

typeset -u tocheck=$1
if [[ $tocheck == *SPP* ]]; then
  : matched
fi
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top