11.Shell中数值比较和字符串比较
  适用于数值的比较
 | 参数 |  说明 |  示例 | 
 | -eq |  等于则为真 |  if [ $var1 -eq 100 ] | 
 | -ne |  不等于则为真 |  if [ $var1 -ne 100 ] | 
 | -gt |  大于则为真 |  if [ $var1 -gt 100 ] | 
 | -ge |  大于等于则为真 |  if [ $var1 -ge 100 ] | 
 | -lt |  小于则为真 |  if [ $var1 -lt 100 ] | 
 | -le |  小于等于则为真 |  if [ $var1 -le 100 ] | 
  适用于字符串的比较
 | 参数 |  说明 |  示例 | 
 | == |  相等则为真 |  if [  $var1 == $var2 ] | 
 | != |  不相等则为真 |  if [  $var1 != $var2 ] | 
 | =~ |  前边变量包含后边变量则为真。本质上=~是正则匹配单层中括号不支持正则需要双层中括号 |  if [  $var1 =~ $var2 ] | 
  字符串测试运算
 | 参数 |  说明 |  示例 | 
 | -z 字符串 |  字符串的长度为零则为真 |  if [ -z $var1 ] | 
 | -n 字符串 |  字符串的长度不为零则为真 |  if [ -n $var1 ] | 
  备注
 - if语句中,数值比较的写法是if [ $var1 -ge $var2 ];字符串比较的写法是if [ “$var1” != “$var2” ],其中加双引号只是兼容$var2处为空的情况
  - 在各种运算中,test命令的运算和中括号是等效的
  - 赋值时等号两边没空格,比较或测试时运算符两边都要有空格
  - shell默认是字符运算,如果想当数值进行运算要在前边加上expr,如:var3=
expr $var1 + $var2  - 出现“[: !=: unary operator expected”或者“期待一元表达式”等类似的错误,一般都是变量的值中有空格所致,此时可将变量用双引号引起来。如if [ "$var1" == "" ]。