I am trying to validate database name like command.sh databaseName
with-in given regex as parameter using bash script.
For example
dataBaseNameIsValid
data-BaseNameIsValid
-dataBaseNameIsNotValid
dataBaseNameIsNotValid-
And the following code is working:
if [ -z $1 ]; then
echo "No database name given"
exit 1
fi
DATABASENAME=$1
# check the DATABASENAME is roughly valid!
DATABASE_PATTERN="^([[:alnum:]]([[:alnum:]\-]{0,61}[[:alnum:]]))$"
if [[ "$DATABASENAME" =~ $DATABASE_PATTERN ]]; then
DATABASENAME=`echo $DATABASENAME | tr '[A-Z]' '[a-z]'`
echo "DATABASENAME: " $DATABASENAME
else
echo "invalid DATABASENAME"
exit 1
fi
Now I want to introduce underscore _
as valid char as well, what I did, I have added _
score to my regex like this:
DATABASE_PATTERN="^([[:alnum:]]([[:alnum:]\-_]{0,61}[[:alnum:]]))$"
This return invalid DATABASENAME
.
What I might doing wrong here?