if

  1. # if
  2. if condition; then
  3. commands;
  4. fi
  5. # if else if
  6. if condition; then
  7. commands;
  8. elif condition; then
  9. commands;
  10. else
  11. commands;
  12. fi

简单版本的if测试

  1. [ condtion ] && action;
  2. [ conditio ] || action;

算数比较

  1. [ $var -eq 0 ] #当var等于0
  2. [ $var -ne 0 ] #当var不等于0
  • -gt 大于
  • -lt 小于
  • -ge 大于或等于
  • -le 小于或等于

使用-a, -o可以组合复杂的测试。

  1. [ $var -ne 0 -a $var -gt 2 ] # -a相当于并且
  2. [ $var -ne 0 -o $var -gt 2 ] # -o相当于或

文件比较

  1. [ -f $file ] # 如果file是存在的文件路径或者文件名,则返回真
  • -f 测试文件路径或者文件是否存在
  • -x 测试文件是否可执行
  • -e 测试文件是否存在
  • -c 测试文件是否是字符设备
  • -b 测试文件是否是块设备
  • -w 测试文件是否可写
  • -r 测试文件是否可读
  • -L 测试文件是否是一个符号链接

字符串比较

字符串比较一定要用双中括号。

  1. [[ $str1 == $str2 ]] # 测试字符串是否相等
  2. [[ $str1 != $str2 ]] # 测试字符串是否不相等
  3. [[ $str1 > $str2 ]] # 测试str1字符序号比str2大
  4. [[ $str1 < $str2 ]] # 测试str1字符序号比str2小
  5. [[ -z $str ]] # 测试str是否是空字符串
  6. [[ -n $str ]] # 测试str是否是非空字符串

if和[之间必须包含有一个空格

  1. # ok
  2. if [[ $1 == $2 ]]; then
  3. echo hello
  4. fi
  5. # error
  6. if[[ $1 == $2 ]]; then
  7. echo hello
  8. fi