05Operator

基本运算符

  a=10
  b=20

  • 算数运算符
    • val=`expr ${a} + ${b}`
      echo "a + b : ${val}" # 30

      val=`expr ${a} - ${b}`
      echo "a - b : ${val}" # -10

      val=`expr ${a} * ${b}`
      echo "a * b : ${val}" # 200

      val=`expr ${b} / ${a}`
      echo "b / a : ${val}" # 2

      val=`expr ${b} % ${a}`
      echo "b % a : ${val}" # 0

      if [ ${a} == ${b} ]
      then
         echo "a 等于 b"
      fi
      if [ ${a} != ${b} ]
      then
         echo "a 不等于 b" #
      fi
  • 关系运算符
    • if [ ${a} -eq ${b} ] # 检测两个数是否相等,相等返回 true。
      then
         echo "${a} -eq ${b} : a 等于 b"
      else
         echo "${a} -eq ${b}: a 不等于 b"
      fi

      if [ ${a} -ne ${b} ] # 检测两个数是否相等,不相等返回 true。
      then
         echo "${a} -ne ${b}: a 不等于 b"
      else
         echo "${a} -ne ${b} : a 等于 b"
      fi

      if [ ${a} -gt ${b} ] # 检测左边的数是否大于右边的,如果是,则返回 true。
      then
         echo "${a} -gt ${b}: a 大于 b"
      else
         echo "${a} -gt ${b}: a 不大于 b"
      fi

      if [ ${a} -lt ${b} ] # 检测左边的数是否小于右边的,如果是,则返回 true。
      then
         echo "${a} -lt ${b}: a 小于 b"
      else
         echo "${a} -lt ${b}: a 不小于 b"
      fi

      if [ ${a} -ge ${b} ] # 检测左边的数是否大于等于右边的,如果是,则返回 true。
      then
         echo "${a} -ge ${b}: a 大于或等于 b"
      else
         echo "${a} -ge ${b}: a 小于 b"
      fi

      if [ ${a} -le ${b} ] # 检测左边的数是否小于等于右边的,如果是,则返回 true。
      then
         echo "${a} -le ${b}: a 小于或等于 b"
      else
         echo "${a} -le ${b}: a 大于 b"
      fi
  • 布尔运算符
    • if [ ${a} != ${b} ] # 非运算,表达式为 true 则返回 false,否则返回 true。
      then
         echo "${a} != ${b} : a 不等于 b"
      else
         echo "${a} != ${b}: a 等于 b"
      fi

      if [ ${a} -lt 100 -o ${b} -gt 100 ] # 或运算,有一个表达式为 true 则返回 true。
      then
         echo "${a} 小于 100 或 ${b} 大于 100 : 返回 true"
      else
         echo "${a} 小于 100 或 ${b} 大于 100 : 返回 false"
      fi


      if [ ${a} -lt 100 -a ${b} -gt 15 ] # 与运算,两个表达式都为 true 才返回 true。
      then
         echo "${a} 小于 100 且 ${b} 大于 15 : 返回 true"
      else
         echo "${a} 小于 100 且 ${b} 大于 15 : 返回 false"
      fi
  • 逻辑运算符
    • if [[ ${a} -lt 100 && ${b} -gt 100 ]] # AND
      then
         echo "返回 true"
      else
         echo "返回 false"
      fi

      if [[ ${a} -lt 100 || ${b} -gt 100 ]] # OR
      then
         echo "返回 true"
      else
         echo "返回 false"
      fi
  • 字符串运算符
    • a="abc"
      b="efg"

      if [ ${a} = ${b} ] # 检测两个字符串是否相等,相等返回 true。
      then
         echo "${a} = ${b} : a 等于 b"
      else
         echo "${a} = ${b}: a 不等于 b"
      fi

      if [ ${a} != ${b} ] # 检测两个字符串是否相等,不相等返回 true。
      then
         echo "${a} != ${b} : a 不等于 b"
      else
         echo "${a} != ${b}: a 等于 b"
      fi

      if [ -z ${a} ] # 检测字符串长度是否为0,为0返回 true。
      then
         echo "-z ${a} : 字符串长度为 0"
      else
         echo "-z ${a} : 字符串长度不为 0"
      fi

      if [ -n ${a} ] # 检测字符串长度是否为0,不为0返回 true。
      then
         echo "-n ${a} : 字符串长度不为 0"
      else
         echo "-n ${a} : 字符串长度为 0"
      fi

      if [ ${a} ] # 检测字符串是否为空,不为空返回 true。
      then
         echo "${a} : 字符串不为空"
      else
         echo "${a} : 字符串为空"
      fi
  • 文件测试运算符
    • file="/home/donny/test.sh"

      if [ -r $file ] # 检测文件是否可读,如果是,则返回 true。
      then
         echo "文件可读"
      else
         echo "文件不可读"
      fi

      if [ -w $file ] # 检测文件是否可写,如果是,则返回 true。
      then
         echo "文件可写"
      else
         echo "文件不可写"
      fi

      if [ -x $file ] # 检测文件是否可执行,如果是,则返回 true。
      then
         echo "文件可执行"
      else
         echo "文件不可执行"
      fi

      if [ -f $file ] # 检测文件是否是普通文件,如果是,则返回 true。
      then
         echo "文件为普通文件"
      else
         echo "文件为特殊文件"
      fi

      if [ -d $file ] # 检测文件是否是目录,如果是,则返回 true。
      then
         echo "文件是个目录"
      else
         echo "文件不是个目录"
      fi

      if [ -s $file ] # 检测文件是否为空(文件大小是否大于0),不为空返回 true。
      then
         echo "文件不为空"
      else
         echo "文件为空"
      fi
      if [ -e $file ]
      then
         echo "文件存在"
      else
         echo "文件不存在"
      fi
原文地址:https://www.cnblogs.com/DowneyJr/p/7657463.html