Frage

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.

War es hilfreich?

Lösung 3

You can use:

shopt -s nocasematch

For case insensitive matching in BASH.

Alternatively this should also work:

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

Andere Tipps

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top