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.

有帮助吗?

解决方案 3

You can use:

shopt -s nocasematch

For case insensitive matching in BASH.

Alternatively this should also work:

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

其他提示

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top