1

This checks if argument is an integer in Bourne Shell Script:

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

How do I check if argument is not an integer (can consist of integers and alphabets)? So, I guess it's just the complement of above, but I'm not sure how to change it. Where can I find info on what these symbol mean?: =~ ^ + $ &

4

1 回答 1

3

您可以使用德摩根定律来否定 if 条件检查,如下所示:

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

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

这里&&使用的意思是“逻辑与”

其余符号^ + $用于正则表达式,这是一个值得阅读的主题,比我在这个答案中所能提供的要多,但简而言之:

  • ^: 匹配行首
  • +: 匹配一个或多个(在这种情况下它匹配一个或多个数字)
  • $: 匹配行尾
  • 一起,^[0-9]+$意味着:只匹配一个只有数字的字符串。
于 2012-11-28T05:19:16.440 回答