命令test
或[
可以測試乙個條件是否成立,如果測試結果為真,則該命令的exit status為0,如果測試結果為假,則命令的exit status為1(注意與c語言的邏輯表示正好相反)。例如測試兩個數的大小關係:
$ var=2雖然看起來很奇怪,但左方括號$ test $var -gt 1
$ echo $?
0$ test $var -gt 3
$ echo $?
1$ [ $var -gt 3 ]
$ echo $?
1
[
確實是乙個命令的名字,傳給命令的各引數之間應該用空格隔開
,比如,$var
、-gt
、3
、]
是[
命令的四個引數,它們之間必須用空格隔開。命令test
或[
的引數形式是相同的,只不過test
命令不需要]
引數。以[
命令為例,常見的測試命令如下表所示:
測試命令
[ -d dir ]
如果dir
存在並且是乙個目錄則為真
[ -f file ]
如果file
存在且是乙個普通檔案則為真
[ -z string ]
如果string
的長度為零則為真
[ -n string ]
如果string
的長度非零則為真
[ string1 = string2 ]
如果兩個字串相同則為真
[ string1 != string2 ]
如果字串不相同則為真
[ arg1 op arg2 ]
arg1
和arg2
應該是整數或者取值為整數的變數,op
是-eq
(等於)-ne
(不等於)-lt
(小於)-le
(小於等於)-gt
(大於)-ge
(大於等於)之中的乙個
和c語言類似,測試條件之間還可以做與、或、非邏輯運算:
帶與、或、非的測試命令
[ ! expr ]
expr
可以是上表中的任意一種測試條件,!表示邏輯反
[ expr1 -a expr2 ]
expr1
和expr2
可以是上表中的任意一種測試條件,-a
表示邏輯與
[ expr1 -o expr2 ]
expr1
和expr2
可以是上表中的任意一種測試條件,-o
表示邏輯或
例如:
$ var=abc注意,如果上例中的$ [ -d desktop -a $var = 'abc' ]
$ echo $?
0
$var
變數事先沒有定義,則被shell展開為空字串,會造成測試條件的語法錯誤(展開為[ -d desktop -a = 'abc' ]
),作為一種好的shell程式設計習慣,應該總是把變數取值放在雙引號之中(展開為[ -d desktop -a "" = 'abc' ]
):
$ unset var$ [ -d desktop -a $var = 'abc' ]
bash: [: too many arguments
$ [ -d desktop -a "$var" = 'abc' ]
$ echo $?
1
Python基礎語法 條件判斷
目錄 條件判斷 再議 input 小結 計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。比如,輸入使用者年齡,根據年齡列印不同的內容,在python程式中,用if語句實現 age 20 if age 18 print your age is age print adult 根據pytho...
十九 wxml語法 條件判斷
在框架中,使用wx if 來判斷是否需要渲染該 塊 wx if trueview 也可以用wx elif和wx else來新增乙個else塊 並不是乙個元件,它僅僅是乙個包裝元素,不會在頁面中做任何渲染,只接受控制屬性 因為wx if是乙個控制屬性,需要將它新增到乙個標籤上.如果要一次性判斷多個元件...
shell指令碼及條件測試
bin sh開頭 chmod x filename 後.filename執行 變數都由字串組成 環境變數生成 export 變數 條件測試操作 1.test命令 在shell環境中,可以根據命令執行後的返回狀態值來判斷該命令是否成功執行,當返回值為 0時表示成功執行,否則 非0值 表示執行失敗。te...