我需要检查输入是否只包含数字字符。我有下面的代码,但它无法正常工作。
if [[ $1 =~ [0-9] ]]; then
echo "Invalid input"
fi
只有678686不适用于yy66666。
答案 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了解详情。