我正在尝试处理"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