在講解test之前
要先了解一個概念
當我們在shell下執行command 或 function 結束都會回傳一個值(我們將值區分為0跟非0,兩種狀況)
例如
$ abc=123
$ echo $? #?問號也是一個變數 , 功能是觀看上一個指令的執行狀況,如正確回傳0,出錯回傳非0值(0-255之間,出錯的值都有意義的可以從這邊除錯)
0 #因為$?前一個執行指令沒有出錯,故回傳值為0
$ 12abc=123 #變數前面不能為數字
-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時才執行
打完剛好12點....收工^_^
留言列表