读书人

test 齐名 [

发布时间: 2012-09-28 00:03:35 作者: rapoo

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 testtest is a shell builtinshell> type :: is a shell builtinshell> type '['[ is a shell builtinshell> type '[['[[ is a shell keywordshell> type ']'bash: type: ]: not foundshell> type ']]']] is a shell keyword

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

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

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

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

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

读书人网 >编程

热点推荐