First, sorry if my question is obscure or in an inconvenient format. This is my first post here :D.
My issue is that I have a script, let's say test.sh
which reads an input, and validates if it's a positive integer (reg ex used from this post:
BASH: Test whether string is valid as an integer?):
#!/bin/sh
echo -n " enter number <"
read num
if [[ $num =~ ^-?[0-9]+$ ]] #if num contains any symbols/letters
then # anywhere in the string
echo "not a positive int"
exit
else
echo "positive int read"
fi
I am running this script on my android device (Xiaomi Mi3 w) using adb shell and the error:
syntax error: =~
unexpected operator keeps displaying.
First, is my regex even correct? Second, any hints on how I can overcome this syntax error?
The default shell in Android is
mksh
. It is not 100% compatible withbash
. So do not expect allbash
recipes to work without changes.For the description of features supported by
mksh
- read its manual page.I had to use ksh expression as shown below to get this to work.
This is a GNU bash POSIX regular expression. In Korn Shell, you can use extglob regular expressions to the same effect:
See the section “File name patterns” in the manpage for details.