• 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 逻辑或 在 [[||]]

  • 相关阅读:
    如何使用C++构建一个极坐标系?
    归一化 [a] 到 [b] 区间
    ffmpeg 如何转换 rgb 图片到 yuv420p?如何使用 C 语言实现 rgb24 如何转换 yuv420p ?
    如何写一个通用的网络包?
    jenkins 配置参数为tag
    jmeter函数助手digest使用简介
    RD-T: 3540 Front Impact Bumper Model
    Listary软件的使用
    Adams各种材料的接触力参数
    Spring 使用构造方法注入方式
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3716091.html
Copyright © 2020-2023  润新知