t4kmode t4kmode - 18 days ago 6
Android Question

adb shell regular expression doesn't work as tested locally

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?

Answer

I had to use ksh expression as shown below to get this to work.

case $num in
    +([0-9])*(.)*([0-9]) )
          # Variable positive integer
      echo "positive integer"
          ;;
    *) 
          # Not a positive integer
      echo "NOPE"
      exit
          ;;
esac
Comments