一尘不染

如何在Bash中测试变量是否为数字?

linux

我只是不知道如何确定传递给脚本的参数是否为数字。

我要做的就是这样:

test *isnumber* $1 && VAR=$1 || echo "need a number"

有什么帮助吗?


阅读 307

收藏
2020-06-02

共1个答案

一尘不染

一种方法是使用正则表达式,如下所示:

re='^[0-9]+$'
if ! [[ $yournumber =~ $re ]] ; then
   echo "error: Not a number" >&2; exit 1
fi

如果该值不一定是整数,请考虑适当修改正则表达式;例如:

^[0-9]+([.][0-9]+)?$

…或使用带符号处理数字:

^[+-]?[0-9]+([.][0-9]+)?$
2020-06-02