adb shell正则表达式无法在本地测试

时间:2015-07-02 23:35:18

标签: android regex shell adb mksh

首先,对不起,如果我的问题不明确或格式不方便。这是我在这里发表的第一篇文章:D。

我的问题是我有一个脚本,让我们说test.sh读取输入,并验证它是否为正整数(此帖子中使用了reg ex: 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

我使用adb shell在我的Android设备(小米Mi3 w)上运行此脚本,错误如下: 语法错误:=~意外操作符不断显示。

首先,我的正则表达是否正确? 第二,关于如何克服这种语法错误的任何提示?

3 个答案:

答案 0 :(得分:1)

Android中的默认shell为mksh。它与bash不是100%兼容。因此,不要指望所有bash配方都能正常运行。

有关mksh支持的功能的说明,请阅读manual page

答案 1 :(得分:1)

这是一个GNU bash POSIX正则表达式。在Korn Shell中,您可以使用extglob正则表达式达到相同的效果:

{{1}}

有关详细信息,请参阅联机帮助页中的“文件名模式”部分。

答案 2 :(得分:0)

我必须使用如下所示的ksh表达式才能使其正常工作。

int.MaxValue