天天看點

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 的符号連結.

test, /usr/bin/test, [ ] , 和/usr/bin/[ 都是等價指令

[[ ]]結構比[ ] 結構更加通用. 這是一個擴充的test指令, 是從ksh88 中引進的.在版本2.02的Bash中, 引入了這個擴充指令!

Bash把[[ $a -lt $b ]] 看作一個單獨的元素, 并且傳回一個退出狀态碼. 注意[[是一個關鍵字, 并不是一個指令.

在[[和]]之間所有的字元都不會發生檔案名擴充或者單詞分割, 但是會發生參數擴充和指令替換.

使用[[ ... ]]條件判斷結構, 而不是[ ... ], 能夠防止腳本中的許多邏輯錯誤. 比如,

&&, ||, <, 和> 操作符能夠正常存在于[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯.