RHEL环境下调试Shell脚本时遇到字符串转换整数的问题

字符串转整型!这种需求应该在编程语言里很常见,Shell里就太麻烦了。有人问为什么要转换?我遇到的问题是参数数量$#需要进行整型运算,而$#取出来的却是字符串,以下为证:

if [ $# != 1 ] ; then
......
fi
这里只能用!=,=,==字符串的比较符,而使用-eq,-lt这些整数比较符就报错了。需要用来做运算就必需转换为整型,在网上查了半天然后问了一大圈朋友,得到的方法却是这样的
i=`expr $# + 0 `
这种方法确实有点搞笑了,但好象真的没有其它更好的办法了!

还要注意的是if条件是整数比较时必需用双方括号,例如:
i=`expr $# + 0 `
j=`expr $i + 1 `
if [[ i -lt j ]] ; then
......
fi

而字符串比较时则是使用单方括号,例如上面第一个例子。

原文地址:https://www.cnblogs.com/zlg88/p/6670776.html