Bash如何检查字符串是否为数字(可以为负数)

时间:2014-03-24 12:49:47

标签: bash

我想检查某个字符串是否是数字,我试过这样:

if ${string} == *[!0-9]*
else echo its a number

但是当我有一个负数时,它表示它不是一个数字,我希望它也适用于负数。

1 个答案:

答案 0 :(得分:3)

试试这个脚本

#!/bin/bash

string=$1

if [[ "$string" =~ ^(-)?[0-9]+$ ]]; then
  echo 'Number'
else
  echo 'Not number'
fi

这仅适用于整数。

如果要匹配和十进制数,请使用此测试

"$string" =~ ^-?[0-9]+(\.[0-9]+)?$