我需要检查输入是否仅包含数字字符。我有下面的代码,但它不能正常工作。
if [[ $1 =~ [0-9] ]]; then
echo "Invalid input"
fi
它应该只适用于 678686 而不是 yy66666。
我需要检查输入是否仅包含数字字符。我有下面的代码,但它不能正常工作。
if [[ $1 =~ [0-9] ]]; then
echo "Invalid input"
fi
它应该只适用于 678686 而不是 yy66666。
这个怎么样:-
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
尝试在您的模式中使用开始/结束锚点。如果您不这样做,则匹配成功并带有测试字符串的一部分。如果您遵循此建议,请不要忘记您必须使用与完整测试字符串匹配的模式。
if [[ $1 =~ ^[0-9]+$ ]]; then
echo "Invalid input"
fi
查看此 SO 帖子以获取更多详细信息。