1. 程式人生 > >單/雙中括號與測試條件

單/雙中括號與測試條件

支持 ... 比較 整數比較 命令 == strong 保留 格式

測試命令


tesst
[]內置命令
[[]]bash中的關鍵字

單中括號


格式[#express1#op#express2#]
註意:
  其中#代表括號不能省略
  不能匹配模式
  變量引用應用雙引號括起,尤其當變量引用有空格時
  與或非形式-a –o !
  常量應用單/雙引號括起
  整數比較時,< == ...需用反斜號轉義,相當於-lt -eq ...

[root@ZYB ~]# zyb="haha haha"
[root@ZYB ~]# echo $zyb
haha haha
[root@ZYB ~]# [ $zyb == "haha haha" ]
-bash: [: too many arguments
[root@ZYB ~]# echo $?
2
[root@ZYB ~]# [ "$zyb" == "haha haha" ]
[root@ZYB ~]# echo $?
0
[root@ZYB ~]# [ "$zyb" != "haha haha" ]
[root@ZYB ~]# echo $?
1
[root@ZYB ~]# [ "$zyb" != "hahahaha" ]
[root@ZYB ~]# echo $?
0
[root@ZYB ~]# [ "$zyb" == "hahahaha" ] ; echo $?
1
\#使用管道輸出測試結果有問題`
[root@ZYB ~]# [ "$zyb" == "hahahaha" ] | echo $?
0

雙中括號


格式[[#pattern1#op#pattern2#]]
註意:
  其中#代表括號不能省略
  可用於模式匹配,支持正則表達式
  變量引用最好用雙引號括起,匹配的模式中的單雙引號都代表符號自身
  與或非形式&& || !
  整數比較時,< == ...需用反斜號轉義,相當於-lt -eq ...

[root@ZYB ~]# zyb="\"haha haha\""
[root@ZYB ~]# echo $zyb
"haha haha"
[root@ZYB ~]# [[ $zyb == ?haha?haha? ]] ; echo $?
0
[root@ZYB ~]# [[ "$zyb" == ?haha?haha? ]] ; echo $?
0
[root@ZYB ~]# [[ "$zyb" == "haha?haha" ]] ; echo $?
1

算術表達


let var_name=算術表達式
let var_name+=valuelet不能省略
let var_name++let不能省略
var_name=$[算術表達式]算術表達式空格較隨意
var_name=$((算術表達式))算術表達式空格較隨意
var_name=${var_name:-value}var_name非空保留原值;var_name空賦值value

[root@ZYB ~]# num=1+2; echo $num
1+2
[root@ZYB ~]# let num=1+2 ; echo $num
3
[root@ZYB ~]# var_name=1; echo $var_name 
1
[root@ZYB ~]# let var_name+=2; echo $var_name 
3
[root@ZYB ~]# var_name+=2 ; echo $var_name 
32

測試條件


布爾運算:與&&||!
組合條件測試:與-a-o!
二元整數測試:num1 op num2
  -eq等於  -ne不等於
  -le小於等於  -ge大於等於  -lt小於  -gt大於
雙目字符測試:str1 op str2
  ==等於  !=<>不等於  >大於  <小於
  =~左側是字符串,右側是一個模式,判斷左側的字符串能否被右側的模式所匹配,通常只在[[]]中使用,模式中可以使用行首、行尾錨定符,但是模式不要加引號
單目字符測試:
  -n str不空為真,空為假
  -z str空為真,不空為假
雙目文件測試op /path/to/somefile
  -e文件是否存在  -a同前  -f普通文件  -d目錄
  -b存在且塊設備  -c存在且字符設備  -h/-L存在且符號鏈接
  -p存在且管道  -S存在且套接字  -s存在且不為空
  -r存在且有讀權限  -w存在且有寫權限  -x存在且執行權限
雙目文件測試file1 op file2
  -ntfile1比file2新
  -otfile1比file2老
  -effile1與file2是否指向同一個文件,包括軟硬鏈接

單/雙中括號與測試條件