检查它是否为整数



我正在尝试处理"integer expression expected"错误。我需要我的输入只是整数。

我做了一个while循环来检查它,但它正在进入循环,即使它是一个整数。

这是我的代码:

read -p "Number: " number
while [[ ! "$number" =~ '[0-9]' ]];
do
read -p "Reenter the number: " number
done

还有别的办法吗?

通过使用引号,您告诉bash字符应该完全匹配。回答[0-9]xyz[0-9]abc实际上是退出循环的方式。

不要引用正则表达式。

此外,您不希望检查字符串是否包含数字。您要检查它是否包含任何其他内容。

while [[ ! $number =~ ^[0-9]+$ ]]
  • ^代表字符串的开头
  • $代表字符串的结尾
  • +表示至少一位

您也可以只检查任何非数字:

while [[ $number =~ [^0-9] ]]
字符类开头的^否定它

尝试

#!/bin/bash
read -p "Number: " number
while [[ ! "$number" =~ ^[0-9]+$ ]];
do
read -p "Reenter the number: " number
done

相关内容

  • 没有找到相关文章

最新更新