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

[经验分享] linux test 条件表达式工具

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-14 08:36:19 | 显示全部楼层 |阅读模式
工作中遇到test的命令 总结一下。(很常用)平时工作太忙 写的文档太潦草请原谅。希望对你有所帮助。


此文只是总结常见的工作中用的比较多。(至少我是用过了)

言归正传 。

最好的办法就是自己去 man test 领悟下。[其中标记***重点 最下方有例子可以说明]

NAME
       test - check file types and compare values
选项
-b<文件>:如果文件为一个块特殊文件,则为真;
-c<文件>:如果文件为一个字符特殊文件,则为真;
-d<文件>:如果文件为一个目录,则为真;
-e<文件>:如果文件存在,则为真;
-f<文件>:如果文件为一个普通文件,则为真;
-g<文件>:如果设置了文件的SGID位,则为真;
-G<文件>:如果文件存在且归该组所有,则为真;
-k<文件>:如果设置了文件的粘着位,则为真;
-O<文件>:如果文件存在并且归该用户所有,则为真;
-p<文件>:如果文件为一个命名管道,则为真;
-r<文件>:如果文件可读,则为真;
-s<文件>:如果文件的长度不为零,则为真;
-S<文件>:如果文件为一个套接字特殊文件,则为真;
-u<文件>:如果设置了文件的SUID位,则为真;
-w<文件>:如果文件可写,则为真;
-x<文件>:如果文件可执行,则为真。

判断表达式

if test      #表达式为真
if test !     #表达式为假
test 表达式1 –a 表达式2      #两个表达式都为真
test 表达式1 –o 表达式2      #两个表达式有一个为真
test 表达式1  ! 表达式2        #条件求反

判断整数

test 整数1 -eq 整数2    #整数相等
test 整数1 -ge 整数2    #整数1大于等于整数2
test 整数1 -gt 整数2    #整数1大于整数2
test 整数1 -le 整数2    #整数1小于等于整数2
test 整数1 -lt 整数2    #整数1小于整数2
test 整数1 -ne 整数2    #整数1不等于整数2

判读文件

test File1 –ef File2    两个文件是否为同一个文件,可用于硬连接。主要判断两个文件是否指向同一个inode。
test File1 –nt File2    判断文件1是否比文件2新
test File1 –ot File2    判断文件1比是否文件2旧
test –b file   #文件是否块设备文件
test –c File   #文件并且是字符设备文件
test –d File   #文件并且是目录
test –e File   #文件是否存在 (常用)
test –f File   #文件是否为正规文件 (常用)
test –g File   #文件是否是设置了组id
test –G File   #文件属于的有效组ID
test –h File   #文件是否是一个符号链接(同-L)
test –k File   #文件是否设置了Sticky bit位
test –b File   #文件存在并且是块设备文件
test –L File   #文件是否是一个符号链接(同-h)
test –o File   #文件的属于有效用户ID
test –p File   #文件是一个命名管道
test –r File   #文件是否可读
test –s File   #文件是否是非空白文件
test –t FD     #文件描述符是在一个终端打开的
test –u File   #文件存在并且设置了它的set-user-id位
test –w File   #文件是否存在并可写
test –x File   #文件属否存在并可执行

语法

         格式1: test <测试表达式>
         格式2:    [<测试表达式>]
         格式3:    [[<测试表达式>]]

其中的 :格式1和格式2是等价的。 个人推荐使用格式2、当然您可以自己选择。爱好问题。

提示:
在[[]]中可以使用通配符进行模式匹配。&&、||、>、<等操作符可以应用于[[]]中,但不能应用于[] 中。

语法例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@shell ~]# test -f linux-1.ht &&echo 0 || echo 1
1
[iyunv@shell ~]# touch linux-1.ht
[iyunv@shell ~]# test -f linux-1.ht &&echo 0 || echo 1
0
test $? -eq 0 && echo 1||echo 0
test ! -f linux  !

[iyunv@shell ~]# arg="oldboy"
[iyunv@shell ~]# echo $arg
oldboy
[iyunv@shell ~]# test -z "$arg" &&echo true||echo false  
false




格式2:[<测试 表达式>]
1
2
3
4
5
6
7
[iyunv@shell ~]# [ -f linux ] && echo true ||echo false
false
[iyunv@shell ~]# touch linux
[iyunv@shell ~]# [ -f linux ] && echo true ||echo false
true
[iyunv@shell ~]# [ -f linux ] && echo true
true



1
2
3
4
5
6
7
8
[iyunv@shell]# [ $a -gt $b ]&& echo 1 ||echo 0
0
[iyunv@shell]# [ $a -lt $b ]&& echo 1 ||echo 0
1
[iyunv@shell]# [[ $a > $b ]]&& echo 1 ||echo 0  
0
[iyunv@shell]# [[ $a < $b ]]&& echo 1 ||echo 0
1




经操作>和<在单 [  ]中需要转义
1
2
3
4
5
6
7
8
[iyunv@shell]# [ $a < $b ]&& echo 1 ||echo 0
1
[iyunv@shell]# [ $a > $b ]&& echo 1 ||echo 0
1
[iyunv@shell]# [ $a \> $b ]&& echo 1 ||echo 0
0
[iyunv@shell]# [ $a \< $b ]&& echo 1 ||echo 0
1






运维网声明 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.yunweiku.com/thread-98711-1-1.html 上篇帖子: linux下单个网卡设置多IP 下篇帖子: linux系统优化参数 linux 表达式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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