Shell脚本中判断变量为数字的3种方法
方法1:通过expr计算变量与一个整数值相加,如果能正常执行则为整数,否则执行出错,$?将是非0的值
expr$args+0&>/dev/null
方法2:打印变量通过sed替换的方式,将变量中的数字替换为空,如果执行替换后变量为空,则为整数
echo$args|sed's/[0-9]//g'
如果判断负数则再用sed过滤负号
echo$args|sed's/[0-9]//g'|sed's/-//g'
下面的脚本通过两个函数来实现数值判断。代码很简单,就不加注释了。
#!/bin/bash usage(){ cat<<EOF USEAGE:sh$0args1args2 exit1 EOF } checkInt(){ expr$1+0&>/dev/null [$?-ne0]&&{echo"Argsmustbeinteger!";exit1;} } checkInt1(){ tmp=`echo$1|sed's/[0-9]//g'` [-n"${tmp}"]&&{echo"Argsmustbeinteger!";exit1;} } [$#-ne2]&&usage args1=$1 args2=$2 checkInt$args1 checkInt1$args2 if[$args1-gt$args2];then echo"yes,$args1greatethan$args2" else echo"no,$args1lessthan$args2" fi