首先,对不起,如果我的问题不明确或格式不方便。这是我在这里发表的第一篇文章: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)上运行此脚本,错误如下:
语法错误:=~
意外操作符不断显示。
首先,我的正则表达是否正确? 第二,关于如何克服这种语法错误的任何提示?
答案 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