###test命令###linux
在講解test以前bash
要先了解一個概念post
當我們在shell下執行command 或 function 結束都會回傳一個值(我們將值區分為0跟非0,兩種狀況).net
例如blog
$ abc=123get
$ echo $? #?問號也是一個變數 , 功能是觀看上一個指令的執行狀況,如正確回傳0,出錯回傳非0值(0-255之間,出錯的值都有意義的能夠從這邊除錯)io
0 #因為$?前一個執行指令沒有出錯,故回傳值為0function
$ 12abc=123 #變數前面不能為數字test
-bash: 12abc=123: command not found #發生錯誤
$echo $?
127 #前一個指令執行出錯,故回傳值非0
當要檢查系統上面是否存在的檔案或相關屬性時,test是一個方便的指令
例如
$ A=123 #給變數A數值
$ test $A #查看變數A是否存在
$ echo $? #查看前一個指令是否出錯
0 #正常回傳0
$test $A && echo "ture" || echo "fales" #使用&& || 來判斷變數A是否存在 下面將再補充&& 和 || 的用法
ture #ture 表明存在
$unset A #unset為卸除A的數值
$test $A #再次查看
$echo $?
1 #因A數值已不在,故test查不到該資料 因此回傳非0
$test $A && echo "ture" || echo "fales"
fales #fales表明A不存在
之前面的例子來看test $A && echo "ture" || echo "fales"
當test查詢A變數是否存在時,依查詢的狀況會回傳0或非0
假如為0 表明檔案存在 會顯示出ture 是因為&&為判斷前面一個指令的回傳值 為0時才執行
假如為非0 表明檔案不存在 會顯示出fales 是因為||為判斷前面一個指令的回傳值 為非0時才執行