문제

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