检查输入仅包含shell脚本中的数字字符

时间:2013-09-04 16:40:06

标签: shell

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

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

只有678686不适用于yy66666。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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

查看this SO post了解详情。