zoukankan      html  css  js  c++  java
  • 07 Test结构

    Test 有多种实现方式, [ 等价于 test, 并且 [ 是一个内建命令, 效率很高

    另外, [[]] 也是测试, [[]]结构比bash[]更灵活, 这是一个扩展test命令, 从ksh88继承过来

    注意: 在[[]]结构中, 将没有文件扩展或者是单词分离, 但是会放生参数扩展或命令替换.

    例如:

    file=/etc/passwd

    if [[ –e $file ]]; then

      echo “Password file exits.”

    fi

    (()), let 也可以返回状态值, 如果这个表达式的结果为非0, 那么返回的状态标记为0, 否则相反. 即表达式为真或大于0, 则返回状态值为0.

    有关文件的测试

    -e 文件存在

    -f 是一个regular文件(不是目录或设备文件)

    -s 文件长度不为 0

    -d 是目录

    -b 设备

    -c 字符设备

    -p 管道

    -h 符号链接

    -L 符号链接

    -S socket

    -t 关联到一个终端设备(这个选项一般用来检测是否在一个给定脚本中的stdin[-t0]或[-t1]一个终端)

    -r 读权限

    -w 写权限

    -x 执行权限

    -g 将组信息标记到某个文件或目录上 sgid

    -u 将owner信息标记在某个文件或目录上 suid

    -O 你是文件所有者

    -G 文件的group跟你相同

    -N 从文件最后被阅读到现在, 是否被修改过.

    f1 –nt f2 文件 f1 比 f2 新

    f1 –ot f2 文件 f1 比 f2 旧

    f1 –ef f2 实体连接f1 f2

    !取反

    整数比较

    -eq =

    -ne !=

    -gt >

    -ge >=

    -lt <

    -le <=

    < 需要使用双括号 ((“$a” < “$b”)), >, <=, >= 一样

    字符串比较

    =

    ==

    一般情况下, 上边两种相同, 但是注意 == 在 [[]], [] 含义不同

    [[ $a == z*]] # 如果$a 以 “z”开头(模式匹配)那么为true

    [[]$a == “z*”] # 如果 $a 等于 z*(字符匹配), 那么结果为 true

    !=

    <  if [[“$a” < “$b”]],   if [ “$a” < “$b” ] 注意, 在一个[] 时, < 需要被转义

    -z 字符串为null, 就是长度为 0

    -n 字符串不能为 null

    混合比较

    -a 逻辑与 在 [[&&]]

    -o 逻辑或 在 [[||]]

  • 相关阅读:
    p3201&bzoj1483 梦幻布丁
    p1341 无序字母对
    p2590&bzoj1036 树的统计
    p1462 通往奥格瑞玛的道路
    p1522 牛的旅行 Cow Tours
    ARC097D Equals
    p2371&bzoj2118 墨墨的等式
    ARC097C K-th Substring
    欧拉函数入门合集(模板)
    主席树
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3716091.html
Copyright © 2011-2022 走看看