在講解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點....收工^_^



arrow
arrow
    全站熱搜

    東勢厝滴yang 發表在 痞客邦 留言(0) 人氣()