繁体   English   中英

Shell脚本Linux,验证整数

[英]Shell script linux, validating integer

此代码用于检查字符是否为整数(我认为)。 我试图理解这是什么意思,我的意思是……该行的每一部分,都在检查GREP手册页,但这对我来说真的很困难。 我在互联网上找到它。 如果有人能向我解释grep的一部分……那是什么意思呢?

echo $character | grep -Eq '^(\\+|-)?[0-9]+$'

谢谢大家!!!

分析此正则表达式:

'^(\+|-)?[0-9]+$'

^ - Line Start
(\+|-)? - Optional + or - sign at start
[0-9]+ - One or more digits
$ - Line End

总体来说,它匹配+123-98765或仅9类的字符串

-E用于扩展的正则表达式支持, -q用于grep命令中的安静模式。

PS:顺便说一句,您不需要grep进行此检查,可以直接在纯bash中执行此操作:

re='^(\+|-)?[0-9]+$'
[[ "$character" =~ $re ]] && echo "its an integer"

我喜欢正则表达式的备忘单:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

这非常有用,您可以轻松分析

'^(+ | - )?[0-9] + $'

  • ^:行必须以...开头
  • ():分组
  • \\:ESC字符(因为+表示某些含义...参见下文)
  • + |-:加号或减号
  • ?:0或1个重复
  • [0-9]:数字范围从0-9
  • +:一个或多个重复
  • $:行尾(不允许更多字符)

因此它接受像-312353243或+1243或5678
但不接受:3 456或6.789或56 $(以美元符号表示)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM