0

我需要检查输入是否仅包含数字字符。我有下面的代码,但它不能正常工作。

if [[ $1 =~ [0-9] ]]; then
echo "Invalid input"
fi

它应该只适用于 678686 而不是 yy66666。

4

2 回答 2

2

这个怎么样:-

re='^[0-9]+$'
if ! [[ $Number =~ $re ]] ; then
   echo "error: Invalid input" >&2; exit 1
fi

或者

case $Number in
    ''|*[!0-9]*) echo nonnumeric;;
    *) echo numeric;;
esac
于 2013-09-04T16:49:37.470 回答
1

尝试在您的模式中使用开始/结束锚点。如果您不这样做,则匹配成功并带有测试字符串的一部分。如果您遵循此建议,请不要忘记您必须使用与完整测试字符串匹配的模式。

if [[ $1 =~ ^[0-9]+$ ]]; then
echo "Invalid input"
fi

查看此 SO 帖子以获取更多详细信息。

于 2013-09-04T16:45:22.510 回答