Skip to content

基本语法

  • test condition

    test 1 = 1 echo $?

  • [ condition ]

    [ 1 = 2 ] echo $?

[ condition ] 空格不能省略,condition 中的空格也不能省略。如 [ 1=2 ] $? 的结果是 0。

condition 如果只是一个值,那么值不为空字符串时返回 true。如 [ foo ] 返回 true,[ ] 返回 false,[ ] 返回 false。

常用判断条件

两个整数之间的比较

  • -eq

    等于(equal) [ 1 -eq 1 ]

  • -ne

    不等于(not equal)

  • -lt

    小于(less than)

  • -le

    小于等于(less equal)

  • -gt

    大于(greater than)

  • -ge

    大于等于(greater equal)

如果是字符串之间的比较,用 = 判断相等,!= 判断不等。

按照文件权限进行判断

  • -r

    有读的权限(read) [ -r foo.txt ]

  • -w

    有写的权限(write)

  • -x

    有执行的权限(execute)

按照文件类型进行判断

  • -e

    文件存在(existence) [ -r foo.txt ]

  • -f

    文件存在并且是一个常规的文件(file)

  • -d

    文件存在并且是一个常规的文件目录(directory)

多条件判断

  • &&

    前一个命令执行成功,才执行下一条命令。

  • ||

    前一条命令执行失败,才执行下一条命令。

[ foo ] && echo true || echo false [ ] && echo true || echo false

效果等同于其它语言中的三元运算符 foo ? true : false