test 命令

###test命令###linux

轉自http://a7419.pixnet.net/blog/post/54409752-linux-test-%E7%94%A8%E6%B3%95-(%26%26-%E5%92%8C-%7C%7C-%E5%B7%AE%E5%88%A5)shell

在講解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時才執行

相關文章
相關標籤/搜索