检查它是否是整数

Check if it is an integer or not

我正在尝试处理 '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] ]]
  • ^ 在一个字符的开头 class 否定它。

尝试

#!/bin/bash
read -p "Number: " number

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