检查参数是否不是Integer

时间:2012-11-28 04:05:47

标签: shell integer arguments

这将检查参数是否为Bourne Shell Script中的整数:

if [[ $3 =~ ^[0-9]+$ ]] && ((  $3 >= 1 ))

如何检查参数是否不是整数(可以包含整数和字母)? 所以,我想这只是上面的补充,但我不知道如何改变它。 我在哪里可以找到这些符号含义的信息?: =〜^ + $&

1 个答案:

答案 0 :(得分:3)

如果条件检查如下,您可以使用De Morgan's Law否定:

if [[ ! $3 =~ ^[0-9]+$ ]] || ((  $3 < 1 ))
  • !内的[[...]]符号表示否定。
  • $3 < 1是对$3 >= 1
  • 的否定

=~运算符允许在if语句中使用正则表达式。

此处使用的&&表示“逻辑与”

其余符号^ + $适用于Regular Expression,这是一个比我在此答案中提供的阅读更多的主题,但简而言之:

  • ^:匹配行的开头
  • +:匹配一个或多个(在此上下文中匹配一个或多个数字)
  • $:匹配行尾
  • 同时,^[0-9]+$表示:只匹配除数字之外的其他字符串。
相关问题