linux脚本 逻辑运算,Linux基础之bash脚本编程初级-逻辑运算与测试

这里我先对ab是否相等进行判断,之后查看结果是假,也就是a不是b。之后对其进行大小判断,然后报错,先为ab加""结果报错,之后又加了[]才未报错。这里我们可以看到在字符串测试中使用[[ ]]方式进行会比较靠谱,但也不一定。用[]还是[[ ]]就是在这种测试中摸索出来的。

下面再对字符是否为空举一个例子

[root@localhost test]# name1=

[root@localhost test]# [ -z $name1 ]

[root@localhost test]# echo $?

[root@localhost test]# [ -n $name1 ]

[root@localhost test]# echo $?

怎么会出现这种情况?字符测试为空竟然不灵!别慌,上面我们曾有经验,字符测试如果单中括号失败那就试试双中括号

[root@localhost test]# [[ -z $name1 ]]

[root@localhost test]# echo $?

[root@localhost test]# [[ -n $name1 ]]

[root@localhost test]# echo $?

结果终于如愿,上面的两个例子告诉我们,当测试结果并不是对时,调整下中括号往往有奇效。

………………………………………………………………………………………………………………………

文件测试:

1、存在性测试

-a FILE (少用)

-e FILE 文件存在性测试,存在为真,否则为假

[root@localhost test]# [ -e /etc/fstab ]

[root@localhost test]# echo $?

0

[root@localhost test]# [[ -e /etc/ftab ]]

[root@localhost test]# echo $?

2、存在性及类别测试

-b FILE:是否存在且为块设备文件,存在为真否则为假

-c FILE:是否存在且为字符设备文件,存在为真,否则为假

-f FILE:是否存在且为普通文件,存在为真,否则为假

-d FILE:是否存在且为目录文件,存在为真,否则为假

-h FILE 或 -L FILE :是否存在且为链接文件,存在为真,否则为假

-p FILE:是否存在且为命名管道文件,存在为真,否则为假

-S FILE:是否存在且为套接字文件,存在为真,否则为假

[root@localhost test]# [ -f /test/if1 ]

[root@localhost test]# echo $?

[root@localhost test]# [ -f /test/ ]

[root@localhost test]# echo $?

3、文件权限测试

-r FILE:是否存在且对当前用户可读,存在为真,否则为假

-w FILE:是否存在且对当前用户可写,存在为真,否则为假

-x FILE:是否存在且对当前用户可执行,存在为真,否则为假

[root@localhost test]# echo $USER

root

[root@localhost test]# [ -r /test/ ]

[root@localhost test]# echo $?

4、文件特殊权限测试

-g FILE:是否存在且拥有sgid,存在为真,否则为假

-u FILE:是否存在且拥有suid,存在为真,否则为假

-k FILE:是否存在且拥有sticky,存在为真,否则为假

[root@localhost test]# [ -g /test/if1 ]

[root@localhost test]# echo $?

[root@localhost test]# ll /test/if1

-rwxr-xr-x. 1 root root 149 8月  15 10:34 /test/if1

5、文件大小测试

-s FILE:是否存在且非空,存在为真,否则为假

[root@localhost test]# [ -s /test/file1 ]

[root@localhost test]# echo $?

[root@localhost test]# echo > file1

[root@localhost test]# [ -s /test/file1 ]

[root@localhost test]# echo $?

0

6、文件时间戳测试

-N FILE:文件自上一次被读取之后是否被修改过,被修改过为真,否则为假

选取刚刚被修改过得file1测试

[root@localhost test]# [ -N /test/file1 ]

[root@localhost test]# echo $?

0

7、文件从属关系测试

-O FILE:当前用户是否为文件的属主,是为真,否为假

-G FILE:当前用户是否属于文件的属组,是为真,否为假

[root@localhost test]# [ -O /test/if1 ]

[root@localhost test]# echo $?

0

[root@localhost test]# ll /test/if1

-rwxr-xr-x. 1 root root 149 8月  15 10:34 /test/if1

8、双目测试

FILE1 -ef FILE2 :FILE1与FILE2是否指向同一个文件系统的相同inode的硬链接,是则为真,否为假

FILE1 -nt FILE2 :FILE1的mtime是否新于FILE2,是为真,否为假

FILE1 -ot FILE2 :FILE1的mtime是否旧于FILE2,是为真,否为假

[root@localhost test]# [ /test/if1 -nt /test/file1 ]

[root@localhost test]# echo $?

因为file1刚刚被修改过,所以它比if1文件的mtine要新,因为使用-nt故测试结果为假

组合测试

第一种方式:

与  COMMAND1 && COMMAND2   第一条命令为假后不再执行第二条命令,为真方执行。

或  COMMAND1 || COMMAND2   第一条命令为真后不再执行第二条命令,为假方执行。

非  ! COMMAND              对命令结果的真假取反

第二种方式:

EXPRESSION -a EXPRESSION  第一条命令为假后不再执行第二条命令,为真方执行。

EXPRESSION -o EXPRESSION  第一条命令为真后不再执行第二条命令,为假方执行。

! EXPRESSION              对命令结果的真假取反

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值