shell编程-判断表达式test和[ ]

一、test 命令

1 判断文件和目录

在这里插入图片描述

$ touch a.txt
$ test -e a.txt;echo $?
0                             # 测试成功,命令返回值为 0
$ test -e s.txt;echo $?
1                             # 测试失败,命令返回值为 非 0
$ test -f a.txt;echo $?
0
$ test -d a.txt;echo $?
1

2 判断文件权限

在这里插入图片描述

3 两个文件新旧的判断

在这里插入图片描述

4 整数之间的判断

test用法
在这里插入图片描述
c语言风格
在这里插入图片描述

5 字符串的判断

在这里插入图片描述
注意
这里的 string 可以是实际的字符串,也可以是一个变量
这里说的字符串是否为 0 的意思是 字符串的长度是否为 0
示例

$ test   -z  ''; echo $?      # 空字符串
0
$ test  -z  ' '; echo $?      # 含有一个空格的字符串
1
$ test  !  -z ' '; echo $?   # 判断含有一个空格的字符串,其长度为非 0 的字符串, 空格也算是字符串。
0
$ test -z ${name}; echo $?   # 变量未定义,shell 中认为其长度为 0
0
$ name=shark
$ test -z ${name}; echo $?
1
$ age=''                               # 定义变量,并且赋值为空字符串
$ test  -z  ${age}; echo $?    # shell 中,被赋值为空字符串的变量长度也为 0
0

注意
再次强调一下, 在 shell 中,以下两种情况,变量的长度均视为 0

  • 变量未定义
  • 变量定义了,但赋值为空字符串,比如 a=’’ , b=""
[root@client ~]# name=shark
[root@client ~]# age=shark
[root@client ~]# test $name == $age ;echo $?
0 
[root@client ~]# name=sharrk
[root@client ~]# test $name == $age ;echo $?
1
[root@client ~]# name=sharb
[root@client ~]# test $name == $age ;echo $?
1
[root@client ~]# test $name != $age ;echo $?
0

6 多个条件的判断

在这里插入图片描述
示例
在这里插入图片描述

二、判断符号中括号: []

[ -z "${HOME}" ] ; echo $?

必须要注意中括号的两端需要有空白字符来分隔喔! 假设我空白键使用“□”符号来表示,那么,在这些地方你都需要有空白键:
在这里插入图片描述

  • 在中括号 [] 内的每个元素之间都需要用空格来分隔;
  • 在中括号内的变量,最好都以双引号括号起来;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值