1.使用expr命令
利用expr做计算时变量或字符串必须是整数的规则,把一个变量或字符串和一个已知的整数(非0)相加,看命令返回的值是否为0.如果为0,就认为加法的变量或字符串为整数,否则就不是。
var=5
expr $var + 6 &>/dev/null
echo $?
2.使用sed加正则表达式
替换一个字符串中的所有数字,看字符串的长度是否为0,如果不为0,则不是整数。
var=abc
if [ -n "`echo $var | sed 's/[0-9]//g'`" ]
then
echo "char"
else
echo "number"
fi
3.用变量的子串替换
如果num的长度不为0,并且把num中的非数字部分删除,然后看结果是不是等于num本身,如果两者成立,那么就是数字,反之亦然。
if [ -n "$num" -a "$num" = "${num//[^0-9]/}" ]
then
echo "char"
else
echo "number"
fi