美文网首页
Linux/unix-shell条件表达式

Linux/unix-shell条件表达式

作者: WindRiseed | 来源:发表于2018-08-26 21:14 被阅读0次

    目录

    • 文件状态的测试
    • 字符串的比较
    • 正数值的比较
    • 逻辑测试
    • 高级表达式
      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条件表达式

          本文链接:https://www.haomeiwen.com/subject/srfaiftx.html