linux的shell脚本下判断一个变量值或字符串是否为整数
2017-06-10 15:19
603 查看
在实际的应用开发中,由于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
原理:
一、利用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
相关文章推荐
- Shell脚本执行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell判断hdfs文件目录是否存在
- [shell]判断一个字符串是否为数字字符串的两种方法(是否为进程号(PID))
- C#判断一个字符串是否为整数
- Linux 中SHELL判断一个环境变量是否存
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
- linux的shell脚本判断当前是否为root用户
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
- java中判断字符串是否是一个整数
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- 判断一个字符串是否为整数
- Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等
- Linux系统shell脚本判断变量文件目录+l脚本的字符串截取(转)
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- Linux系统shell脚本对字符串、数字、文件的判断
- shell脚本使用两个数组,判断一个变量是否在数组里面的例子
- linux的shell脚本判断当前是否为root用户
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- 如何在Shell中判断一个变量是否为整数
- java中判断字符串是否是一个整数