2012-10-11 107 views
1

爲什麼在unix終端中沒有輸出到命令test 3 -lt 6?不應該測試輸出0或1?unix中的測試命令不會打印輸出

我做了一個人的測試,它說

與狀態退出的表達

+0

「測試」許多許多事情之一併沒有做到。也許你正在尋找'echo'? – tripleee

回答

4

不打印退出狀態決定的,它只是返回。可以在ifwhile測試它,例如

if test 3 -lt 6 ; then 
    echo ok 
else 
    echo not ok 
fi 

此外,最後一個表達式的退出代碼被保存在$?

test 3 -lt 6; echo $? 
1

test返回一個退出狀態,這是一個表示測試是否成功。您可以執行test之後通過讀取$?得到它,或者你可以直接在控制結構使用它,例如:

if test 3 -lt 6 
    do echo "everything is aaaaalright" 
    else echo "whaaat?" 
fi 
1

在外殼的每個命令有返回值,而不僅僅是test。返回值是rairly打印的,我們直接測試它們,例如使用ifwhile聲明,或者也可以在&&||的快捷方式中使用它。有時我們可能會存儲返回值,該值也可用於變量?

test指令相當古老。既然你已經標記bash,那麼你不妨考慮使用

if ((3 < 6)); then 

算術測試,或

if [[ $name == "Fred Bloggs" ]] ; then 

的文字或圖案的測試。

這些通常更直觀,更不容易出錯。像test,(( ))[[ ]]是它們自己的命令,並且可以在沒有ifwhile的情況下使用。他們返回0(成功)爲真,1(失敗)爲假。

順便說一句,當你做一個man test你實際上在尋找test程序的文檔。你可能會更好使用man bashhelp test