检查输入仅由shell脚本中的数字字符组成

检查输入仅由shell脚本中的数字字符组成,shell,Shell,我需要检查输入是否只包含数字字符。我有下面的代码,但它没有正常工作 if [[ $1 =~ [0-9] ]]; then echo "Invalid input" fi 它只适用于678686,不适用于yy66666。尝试在图案中使用开始/结束锚定。如果没有,则匹配成功,测试字符串的一部分。不要忘记,如果遵循此建议,您必须使用与完整测试字符串匹配的模式 if [[ $1 =~ ^[0-9]+$ ]]; then echo "Invalid input" fi 查看更多详细信息。尝试在图案中使

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

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

它只适用于678686,不适用于yy66666。

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

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

查看更多详细信息。

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

if [[ $1 =~ ^[0-9]+$ ]]; then
echo "Invalid input"
fi
查看更多详细信息。

这个怎么样:-

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

这个怎么样:-

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


@jcrshankar:-尽管上述解决方案运行良好。我也发布了另一个选项!!!看一看:)@jcrshankar:-尽管上述解决方案效果良好。我也发布了另一个选项!!!看一看:)@tripleee:-非常感谢!!!有时候你做傻事只是为了得到一张选票!!;)@特里皮:-非常感谢!!!有时候你做傻事只是为了得到一张选票!!;)反向测试的可能副本通常更简洁:
[$1=~[^[:digit:][]]]和&echo Invalid
--如果您找到一个非数字,它是无效的。反向测试的可能副本通常更简洁:
[$1=~[^[:digit:][]]和&echo Invalid
--如果您找到一个非数字,它是无效的