【busybox记录】【shell指令】test

目录

内容来源:

【GUN】【test】指令介绍

【busybox】【test】指令介绍

【linux】【test】指令介绍

使用示例:

常用组合指令:

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【test】指令介绍

test:检查文件类型,比较值
根据条件表达式expr的求值,test 返回0 (true)或1 (false)的状态。表达式的每一部分都必须是一个单独的参数。
test 具有文件状态检查、字符串操作符和数值比较操作符。
test 有另一种形式,它使用开、闭方括号代替前面的“test”。例如,你可以写' [-d /] '而不是' test -d / '。
方括号必须是单独的参数;例如,' [-d /] '并没有达到预期的效果。由于“test expr”和“[expr]”具有相同的含义,下面只讨论前者。
简介:
test expression
test [ expression ] [ ] [ option
由于 shell 别名和内置的测试函数,以交互方式或在脚本中使用未经修饰的测试可能会获得与这里描述的不同的功能。
通过env(例如,env test…)调用它,以避免来自 shell 的干扰。
如果省略expression,则test返回false。如果expression是单个参数,则如果参数为空,则test返回false,否则返回true。
参数可以是任何字符串,包括像' -d ', ' -1 ', '--','--help '和'--version '这样的字符串,大多数其他程序会将其视为选项。
要获取帮助和版本信息,调用命令'[ --help '和'[ --version ',不要使用通常的右括号。参见第2章[常用选项],第2页。
退出状态:
	0 如果表达式为真,
	1 如果表达式为假,
	2 如果发生错误。

1、文件类型测试
这些选项测试特定类型的文件。(一切都是一个文件,但不是所有的文件都是一样的!)
‘-b file’ 如果文件存在并且是块特殊设备,则为true。
‘-c file’ 如果文件存在并且是字符特殊设备,则为true。
‘-d file’ 如果文件存在并且是一个目录,则为true。
‘-f file’ 如果file存在并且是一个常规文件,则为true。
‘-h file’
‘-L file’ 如果文件存在并且是一个符号链接,则为true。与所有其他与文件相关的测试不同,如果文件是符号链接,则此测试不会取消对文件的引用。
‘-p file’ 如果文件存在并且是命名管道,则为true。
‘-S file’ 如果file存在并且是套接字,则为true。
‘-t fd’   如果fd是与终端相关联的文件描述符,则为true。
2、访问权限测试
这些选项测试特定的访问权限。
‘-g file’ 如果文件存在并且设置了set-group-ID位,则为true。
‘-k file’ 如果文件存在并且设置了其粘着位,则为true。
‘-r file’ 如果文件存在并且用户具有读访问权限,则为true。
‘-u file’ 如果文件存在并且设置了set-group-ID位,则为true。
‘-w file’ 如果文件存在并且用户具有写访问权限,则为true。
‘-x file’ 如果文件存在并且用户具有执行访问权限(或搜索权限,如果是目录),则为true。
‘-O file’ 如果文件存在且为当前有效用户ID所有,则返回true。
‘-G file’ 如果文件存在并且属于当前有效的组ID,则返回true。
3、文件特性测试
这些选项测试其他文件特征。
‘-e file’ 如果文件存在,则为true。
‘-s file’ 如果文件存在且大小大于0,则为true。
‘file1 -nt file2’ 如果file1比file2更新(根据修改日期),或者file1存在而file2不存在,则为true。
‘file1 -ot file2’ 如果file1比file2早(根据修改日期),或者file2存在而file1不存在,则为true。
‘file1 -ef file2’ 如果file1和file2具有相同的设备和索引号,即,如果它们彼此是硬链接,则为true。
‘-N file’  如果文件存在并且自上次读取(atime)以来已被修改(mtime),则为true。
4、字符串测试
这些选项测试字符串特征。您可能需要为shell引用字符串参数。例如:
	test -n "$V"
这里的引号可以防止传递错误的参数来测试‘$V’是否为空或包含特殊字符。
‘-z string’            如果字符串的长度为零,则为true。
‘-n string’
‘string’               如果字符串的长度非零,则为true。
‘string1 = string2’    如果字符串相等,则为true。
‘string1 == string2’   如果字符串相等(' = '的同义词),则为true。这种形式不能移植到其他shell和系统中。
‘string1 != string2’   如果字符串不相等,则为true。
5、数值测试
数字关系运算符。参数必须完全是数字(可能是负数),或者使用特殊表达式-l string,其计算结果为string的长度。
‘arg1 -eq arg2’
‘arg1 -ne arg2’
‘arg1 -lt arg2’
‘arg1 -le arg2’
‘arg1 -gt arg2’
‘arg1 -ge arg2’
当arg1等于、不等于、小于、小于等于、大于或大于等于arg2时,这些算术二进制运算符分别返回true。
例如:
test -1 -gt -2 && echo yes
⇒ yes
test -l abc -gt 1 && echo yes
⇒ yes
test 0x100 -eq 1
错误测试:在-eq之前期望整数表达式
6、试验用连接词
最好使用shell逻辑原语而不是这些内部逻辑连接来进行测试,因为表达式可能会根据其参数的扩展而变得模棱两可。
例如,当 ‘$1’ 被设置为 ‘'!'’ 和 ‘$2’ 转换为空字符串 ‘''’:
test "$1" -a "$2"
并应写成:
test "$1" && test "$2"
shell逻辑原语还受益于短路操作,这对于文件属性测试非常重要。
‘! expr’          如果expr为假,则为真。‘!’的优先级低于exp的所有部分。 ‘!’ 应该指定在二进制表达式的左边,即‘! 1 -gt 2’而不是‘1 ! -gt 2’。
‘expr1 -a expr2’  如果expr1和expr2都为真,则为真。' -a '是左结合的,优先级高于' -o '。
‘expr1 -o expr2’  如果expr1或expr2为真,则为真。' -o '是左结合律。

【busybox】【test】指令介绍

NA

【linux】【test】指令介绍

NA

使用示例:

NA

常用组合指令:

指令不常用/组合用法还需继续挖掘:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻面条EW

感谢您的打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值