检查变量是否是一个数值
遇到一个简单的脚本需求,判断文件中每一行是否都是数字,如果存在非数字(如字母),就需要提示。
参考shell 判断变量为数字的N种方法提供的2个比较巧妙的方法:
方法一:通过
expr
计算变量和一个整数相加,如果能正常执行则为整数,否则执行出错。$?
是非零值:
方法二(此方法更简便清晰):通过
sed
替换变两种的数字为空,如果执行过后变量完全变空,则表明是整数。
结合上述方法二,这里一段脚本判断文件中每一行是否是数值:
[ -n "$CHECK_FILE_NUM" ]
的含义是判断字符串是否为null值 - shell中判断字符串null值
不过,上述方法只能判断整数,对于小数或者符号数值存在偏差
通过正则表达式判断字符串是否是数值
如果要判断小数
带符号小数
通过-eq
数值运算符来判断是否是整数
-eq
数值运算符来判断是否是整数在shell中,如果非整数,数值比较运算符-eq
就会报错,可以用这个方法来判断是整数还是字符串:
参考
Last updated