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

Bash how to check if a string is a number(can be negative)

本问题已经有最佳答案,请猛点这里访问。

我想检查某个字符串是否是数字,我尝试了以下方法:

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

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


试试这个脚本

1
2
3
4
5
6
7
8
9
#!/bin/bash

string=$1

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

这只适用于整数。

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

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