设为首页 收藏本站
查看: 1307|回复: 0

Linux Shell编程之测试条件

[复制链接]

尚未签到

发表于 2018-8-18 14:26:35 | 显示全部楼层 |阅读模式
  执行命令并利用命令状态返回值来判断某些状态
  echo $?
  0代表成功,非0代表不成功
  测试表达式
  数值比较
  -eq 等于
DSC0000.jpg

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

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

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

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

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

DSC0006.jpg

DSC0007.jpg

  > 是否大于 < 是否小于
DSC0008.jpg

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

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

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

DSC00012.jpg DSC00013.jpg

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

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

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

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

  查看文件是否有STICKY -k
DSC00018.jpg

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

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

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

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

DSC00023.jpg

  aaaa.text 比fstab.1新
DSC00024.jpg

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

DSC00026.jpg

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

DSC00028.jpg

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

DSC00030.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-553539-1-1.html 上篇帖子: Linux高级Shell脚本讲解 下篇帖子: Linux Shell编程之测试条件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表