linux的shell脚本下判断一个变量值或字符串是否为整数

本文介绍了三种在Shell脚本中判断一个字符串是否代表整数的方法:使用expr进行计算、利用sed配合正则表达式及通过字符串处理实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际的应用开发中,由于shell缺少许多函数库,所以判断字符串是否为整数就不是一件容易的事儿,那么这里介绍一般的用于判断一个字符串是否为整数的方法。


原理:

一、利用expr做计算时变量或字符串必须是整数的规则,把一个变量或字符串和一个已知的整数(非0)相加,看命令返回的值是否为0.如果为0,就认为加法的变量或字符串为整数,否则就不是。

 i=5

expr $I + 6 &>/dev/null

echo $?

如果输出的是0,那么表明i是整数,反之则表示为非整数。其中$?表示的是最后运行的代码的返回值

上述判断中,有&>表示的就是不管是什么,都重定向到/dev/null中。


二、使用sed加正则表达式

思路:删除一个字符串中的所有数字,看字符串的长度是否为0,如果不为0,则不是整数。

if [ -n "`echo char | sed 's/[0-9]//g'`" ]  

then

echo "char"

else

echo "number"

fi

三、用变量的子串替换

思路:如果num的长度不为0,并且把num中的非数字部分删除,然后看结果是不是等于num本身,如果两者成立,那么就是数字,反之亦然。

if [ -n "$num" -a "$num" = "${num//[^0-9]/}" ]

then

echo "char"

else

echo "number"

fi



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值