Linux/unix-shell条件表达式

目录

  • 文件状态的测试
  • 字符串的比较
  • 正数值的比较
  • 逻辑测试
  • 高级表达式
    1.整数高级表达式
    2.字符串高级表达式

正文

文件状态测试表达式

表达式格式

  • [ 操作符 文件或目录 ]:中括号的表达式必须两边都有一个空格。

命令操作符

  • -d:测试是否为目录,是为真。
  • -e:测试目录或文件是否存在,存在为真。
  • -f:测试是否为文件,是则为真。
  • -r:当前用户是否有读取权限,是则为真。
  • -w:测试当前用户是否有权限写入,是ze为真。
  • -x:测试当前用户是否可执行该文件,可执行则为真。
  • -L:测试是否为符号链接文件,是则为真。
  • -nt:file1 -nt file2 如果 file1 比 file2 新(修改时间),则为真。
  • -ot:file1 -ot file2 如果 file1 比 file2 旧(修改时间),则为真。

字符串条件表达式

表达式格式

[ 字符串 操作符 字符串 ]:中括号的表达式必须两边都有一个空格。

操作符

  • =或==:字符串内容相同则为真,就是说包含的文本一摸一样。
  • !=:字符串内容不同,则为真(!号表示相反的意思)。
  • -z:字符串内容为空(长度为零)则为真。
  • -n:字符串内容非空(长度非零)则为真。
  • <:string1 < string2, 如果string1在本地的字典序列中排在string2之前,则为真。
  • <:string1 > string2, 如果string1在本地的字典序列中排在string2之后,则为真。

注意点

1.字符串的 “等于” 比较,为了与
POSIX 一致,在[]中使用=,(尽管==也可以可以用的)。
2.注意在=前后各有一个空格,如果没有空格就是赋值的关系,不是比较的关系。
3.字符串的> <比较运算符,一般放在[[ ]]之中,而不是test ("[]")
4.字符串的> <比较的结果,与本地的locale有关,是按照其字典序列进行比较的。

整数值表达式

格式

[ 整数 操作符 整数 ]

操作符

  • -eq:等于(equal)。
  • -ne:不等于(not equal)。
  • -gt:大于(Greater than)。
  • -lt:小于(lesser than)。
  • -le:小于等于(lesser or equal)。
  • -ge:大于等于(Greater or equal)。

注意点

1.以上运算符也适用字符串,字符串的 =、==、!=、<、>适用与整数。

逻辑表达式

格式

[ 表达式1 ] 操作符 [ 表达式2 ]

操作符

  • -a 或 && :逻辑与,“而且”的意思,前后两个表达式都成立时整个测试结果才为真,否则为假。
  • -o 或 || : 逻辑或,“或者”的意思,操作符两边至少一个为真时,结果为真,否为为假。
  • ! :逻辑否,当制定条件不成立时,返回结果为真。

高级表达式

1.整数高级表达式###

格式

( ( 表达式 ) ):两个括号之间必须有一个空格,表达式与括号之间必须也有一个空格。

操作符

  • 变量++:自增运算。
  • 变量--:自减运算。

2.字符串高级表达式

参考文章

你可能感兴趣的:(Linux/unix-shell条件表达式)