Linux命令之测试条件表达式test

概述

test 命令是 shell 环境中测试条件表达式的实用工具。

在这里插入图片描述

注:但实际上在 shell 编程中并未使用 test 命令,而通常使用 [ ] 简写形式进行替代。

语法

该命令的语法如下:

test 条件表达式

test 命令会根据条件表达式的结果返回真(0)或者返回假(1)。该命令常用于判断四类情况:

  • 表达式判断
  • 字符串比较
  • 数字比较
  • 文件比较

使用

表达式判断

表达式判断的基本语法如下:

# 表达式为真
if test 表达式

# 表达式为假
if test ! 表达式

# 两个表达式都为真才为真,使用 -a 选项连接(and)
test 表达式1 -a 表达式2    

# 两个表达式有一个为真就为真,使用 -o 选项连接(or)
test 表达式1 -o 表达式2

# 条件求反
test 表达式1 ! 表达式2       

示例如下:
在这里插入图片描述

判断字符串

字符串判断的基本语法如下:

# 字符串的长度是否不等于零
test -n 字符串

# 字符串的长度是否等于零
test -z 字符串

# 字符串是否相等
test 字符串1 = 字符串2

# 字符串是否不相等(注意空格)
test 字符串1 != 字符串2

示例如下:
在这里插入图片描述

判断整数

可以对两个整数的大小进行判断,基本语法如下:

# 判断两个整数是否相等
test 整数1 -eq 整数2 

# 判断整数1是否大于等于整数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

示例如下:
在这里插入图片描述

判断文件

还有些对于文件判断的选项:

# 两个文件是否为同一个文件,可用于硬连接。主要判断两个文件是否指向同一个inode。
test File1 –ef File2

# 判断文件1是否比文件2新    
test File1 –nt File2

# 判断文件1比是否文件2旧
test File1 –ot File2

# 文件是否块设备文件
test –b File  

# 文件并且是字符设备文件 
test –c File

# 文件并且是目录   
test –d File

# 文件是否存在 (常用)
test –e File

#文件是否为正规文件 (常用)   
test –f File

# 文件是否是设置了组id
test –g File

# 文件属于的有效组ID   
test –G File

# 文件是否是一个符号链接(同-L)
test –h File

# 文件是否设置了Sticky bit位
test –k File

# 文件存在并且是块设备文件
test –b File

# 文件是否是一个符号链接(同-h)   
test –L File

# 文件的属于有效用户ID
test –o File

# 文件是一个命名管道
test –p File

# 文件是否可读
test –r File

# 文件是否是非空白文件
test –s File

# 文件描述符是在一个终端打开的
test –t FD

# 文件存在并且设置了它的set-user-id位
test –u File

# 文件是否存在并可写
test –w File

# 文件属否存在并可执行
test –x File

示例如下:
在这里插入图片描述

Shell 中使用 test

在 shell 脚本中并不是直接使用 test 命令的,而是使用中括号 [ ] 。语法如下:

test 条件表达式
# 等价于,注意条件表达式左右两侧都必须要有空格
[ 条件表达式 ]

例如:

# 注意空格
test a == b
# 等价于
[ a == b ]

完整的 shell 脚本示例如下:

#! /bin/bash

read -p "请输入第一个数:" a
read -p "请输入第二个数:" b

echo "使用 test 语法比较:"
if test $a -gt $b; then
    echo "a>b"
elif test $a -lt $b; then
    echo "a<b"
else
    echo "a=b"
fi

echo "使用 [ ] 语法比较:"
if [ $a -gt $b ]; then
    echo "a>b"
elif [ $a -lt $b ]; then
    echo "a<b"
else
    echo "a=b"
fi

注:空格是必须的,不能省略,否则将会报错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值