检查它是否是整数
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
我正在尝试处理 '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