If I pass a word as an argument by:
$./file.sh hello
it gives Even as output when it should print "Argument should be a number"
#!/bin/bash
set -e
if [[ -z $1 ]]
then
        echo "Argument expected"
else 
        if [[ $1 =~ "\D" ]] #This does not work as expected
        then
                echo "Argument should be a number"
        else
                a=$1%2
                if [[ a -eq 0 ]]
                then
                        echo "Even"
                elif [[ a -eq 1 ]]
                then
                        echo "Odd"
                fi  
        fi  
fi
#End of program
When I change "\D" to "[^0-9]" in the if statement, it works as expected and prints "Argument should be a number" to the console. Don't they both have the same meaning? If not, in what way are the two different from each other?
 
     
     
    