[ .. ]can't match globs. Use
[[ .. ]]or grep.
if [ $var == *[^0-9]* ] then echo "$var is not numeric" fi
if [[ $var == *[^0-9]* ]] then echo "$var is not numeric" fi
[ .. ] aka
test can not match against globs.
In bash/ksh, you can instead use
[[ .. ]] which supports this behavior.
In sh, you can rewrite to use
if echo $var | grep -q '^[0-9]*$'; then echo "$var is numeric" fi
None. If you are not trying to match a glob, quote the argument (e.g.
[ $var == '*' ] to match literal asterisk.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.