test 等价 [

简介: 专有命令[ ( 左中括号, 特殊字符). 这个命令与test命令等价, 并且出于效率上的考虑, 这是一个内建命令. 这个命令把它的参数作为比较表达式或者作为文件测试, 并且根据比较的结 果来返回一个退出状态码(0 表示真, 1表示假). if test condition-true结构与if [ condition-true ] 完全相同. 左中括号,[ , 是 调用test命令的标

专有命令[ ( 左中括号, 特殊字符). 这个命令与test命令等价, 并且出于效率上的考虑,
这是一个内建命令. 这个命令把它的参数作为比较表达式或者作为文件测试, 并且根据比较的结
果来返回一个退出状态码(0 表示真, 1表示假).

if test condition-true结构与if [ condition-true ] 完全相同. 左中括号,
[ , 是 调用test命令的标识. 而关闭条件判断用的的右中括号, ] ,在if/test结构中并不是严格必需
的, 但是在Bash的新版本中必须要求使用.

 

test命令在Bash中是内建命令, 用来测试文件类型, 或者用来比较字符串. 因此, 在Bash
脚本中, test命令并不会调用外部的/usr/bin/test 中的test命令, 这是sh-utils工具包中
的一部分. 同样的, [ 也并不会调用/usr/bin/[ , 这是/usr/bin/test 的符号链接.

shell> type test
test is a shell builtin
shell> type :
: is a shell builtin
shell> type '['
[ is a shell builtin
shell> type '[['
[[ is a shell keyword
shell> type ']'
bash: type: ]: not found
shell> type ']]'
]] is a shell keyword

 

test, /usr/bin/test, [ ] , 和/usr/bin/[ 都是等价命令

[[ ]]结构比[ ] 结构更加通用. 这是一个扩展的test命令, 是从ksh88 中引进的.在版本2.02的Bash中, 引入了这个扩展命令!

Bash把[[ $a -lt $b ]] 看作一个单独的元素, 并且返回一个退出状态码. 注意[[是一个关键字, 并不是一个命令.

[[和]]之间所有的字符都不会发生文件名扩展或者单词分割, 但是会发生参数扩展命令替换.

使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如,
&&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.

 

目录
相关文章
|
1月前
a+=b 和 a=a+b 真的完全等价吗?
a+=b 和 a=a+b 真的完全等价吗?
27 0
|
5月前
1043 输出PATest (20 分)
1043 输出PATest (20 分)
|
6月前
test114514
test114514
44 0
|
存储 SQL 缓存
|
C语言 C++
1043 输出PATest (20 分)
给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。
96 0
|
DataWorks 搜索推荐 测试技术
召奴的大哉问系列:B2B 是否要做AB Test
AB Testing在软体工程领域是一个耳熟能详的词,大家都知道AB Test的重要性。当产品经理提出的需求不合里(太难做)时,程序员们心理总是os,你怎么知道客户到底要什么,不也是拍脑袋想的吗,这时候我们可能会提出另一种作法,并要求他(她)去做一个AB Test来验证哪一个作法更好。 但是,大家可能不知道,要做一个成功的AB Test实验,它背后的成本是非常巨大的。首先,你必须做许多的分析,了
1032 0
召奴的大哉问系列:B2B 是否要做AB Test
just test
click me
1017 0
|
SQL Oracle 关系型数据库
[20180224]exp参数RECORDLENGTH.txt
[20180224]exp参数RECORDLENGTH.txt --//虽然已经很少使用exp导致,如果加入direct=y参数,设置RECORDLENGTH参数能加快数据导出.
1585 0