我知道这一定很容易,但我不知道如何。我可以做十几种语言,但不是BASH!
在我的研究中,我发现这:
Regular expression to test whether a string consists of a valid real number in base 10
还有一个答案谈到正则表达式,但就我所知,这是一个函数在C(其他)。仍然,它有什么看起来像一个伟大的答案,所以我尝试它与grep,但grep不知道该怎么办。我试着-P在我的框上的意思是把它当作一个PERL regexp – nada。 Dash E(-E)也没有工作。和也没有。
为了清楚,我正在尝试这样的东西,寻找任何输出 – 从那里,我会破解脚本,以利用我获得的任何优势。 (IOW,我期望一个不合格的输入不返回任何东西,而有效的行被重复)。
snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/") if [ -z "$snafu" ] ; then echo "Not an integer - nothing back from the grep" else echo "Integer." fi
有人请说明这是最容易做到的吗?
坦率地说,这是一个短暂的TEST,在我看来。它应该有一个这样的标志
if [ -I "string" ] ; then echo "String is a valid integer." else echo "String is not a valid integer." fi
谢谢。
[[ $var =~ ^-?[0-9]+$ ]]
> ^表示输入模式的开始
> – 是一个文字“ – ”
>?意指“前面( – )”的0或1,
>意味着“前面的一个或多个([0-9])”
> $表示输入模式的结束
因此,正则表达式匹配一个可选的 – (对于负数的情况),后跟一个或多个十进制数字。
参考文献:
> http://www.tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF
原文地址:https://www.jb51.cc/bash/392198.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。