191145685 发表于 2018-8-18 14:26:35

Linux Shell编程之测试条件

  执行命令并利用命令状态返回值来判断某些状态
  echo $?
  0代表成功,非0代表不成功
  测试表达式
  数值比较
  -eq 等于

  返回值是1,说明2不等于3
  -ne 不等于

  返回值是0 说明2不等于3
  还可以直接使用中括号,而不需要输入test关键字

  返回值为1 说明2等于2
  -gt 左侧是否大于右侧

  左侧的2大于右侧的1
  -lt 左侧是否小于右侧

  左侧2不小于右侧1
  剩下还有 le(小于等于) 和ge(大于等于)
  字符串比较
  注意:在比较字符串的时候,最好使用双中括号,如果有变量最好用双引号引住



  > 是否大于 < 是否小于

  为什么a要小于b?因为字符在比较时,使用的是ASCII值
  != 不等于
  下面这个比较符很少见哈,叫做模式匹配
  左侧的字符串是否可以被右侧的匹配符匹配到

  这样就算匹配上了。两次比对,第一次成功,第二次失败
  如果要让第二次也成功可以这么写

  -z &quot;STRINGS&quot; 判断STRINGS字符串是否为空


  -n &quot;STRINGS&quot;判断 STRINGS字符串是否不空

  正因为变量name值为空,所以-n的返回值为1.
  脚本返回值
  默认是脚本中最后一条命令的状态返回值,管理员可以自定义脚本返回值
  exit n就是返回的值,shell脚本中遇到exit就会退出程序
  文件测试
  查看文件是否存在 -e

  查看文件是否为块设备 -b

  查看文件是否为字符设备文件
  -c
  查看文件是否为普通文件
  -f
  查看文件是否为目录文件
  -d
  
  查看文件是否为符号链接文件
  -h/-L
  查看文件是否为管道文件
  -p
  查看文件是否为套接字文件
  -S
  查看文件是否存在且对当前用户可读
  -r
  查看文件是否存在且对当前用户可写
  -w
  查看文件是否存在且对当前用户可执行
  -x
  查看文件是否存在且拥有SGID
  -g
  查看文件是否有SUID -u

  查看文件是否有STICKY -k

  查看文件是否存在而且有内容-s

  有文件,但是文件里面没有内容
  查看文件自上次读取后是否被修改过
  -N
  查看当前用户是否是指定文件的属主 -O

  查看当前用户是否属于指定文件的属组 -G

  双目测试
  -ef两个文件是否是指向同一个文件的两个硬链接文件
  -nt 左边的文件是否比右边的文件新? 时间以最近一次修改时间为主
  -ot 左边的文件是否比右边的文件旧? 时间以最近一次修改时间为主


  aaaa.text 比fstab.1新

  fstab.1比aaaa.text文件旧
  组合测试
  command1 && command 2
  如果第一个命令错了,就不运行第二个命令了
  如果第一个命令对了,第二个命令继续运行
  command1 || command2
  如果第一个命令错了,第二个命令就继续运行
  如果第一个命令对了,就不运行第二个命令了。


  && 等同于-a 注意 如果是-a的参数那么表达式两边是单的中括号


  || 等同于 -o
  非的命令
  !command1



页: [1]
查看完整版本: Linux Shell编程之测试条件